【发布时间】:2012-07-29 22:48:32
【问题描述】:
我有一个奇怪的问题,它(到目前为止)只在 Firefox 中表现出来,它将 URL 重写到不同的域(也由我们托管)。然而,在 Safari 或 Chrome 中不会发生重写(我正在使用 MacBook Pro 进行测试)。
我的设置是这样的:运行 HAProxy 的负载均衡器在 80 和内部 8080 上侦听,Apache 在 443 上侦听。80 上的流量被传递到后端,来自 Apache 的流量经过 SSL 解密,然后发送到 localhost:8080,然后传递到后端的端口 8443。在后端,来自 80 的任何流量都被认为是非 SSL,但在 8443 上被认为是解密的 SSL。后端服务器正在运行 Apache。
如果我从 SSL 站点上的任何浏览器访问 https://www.sslexample.com/(以下简称 SSL_DOMAIN),一切都会正常运行。它命中 Apache SSL 加速器,被解密,传递给代理,然后发送到后端。如果我再次访问http://www.nonsslexample.com/(以下称为 NONSSL_DOMAIN),那么对于非 SSL 站点,一切都按预期运行,它会访问代理,然后是后端,并且非 SSL 流量会按预期提供。
这就是事情变得奇怪的地方。如果我通过 http 访问 SSL_DOMAIN,那么我应该会被重定向到 https。对于我们的混合 SSL/非 SSL 域之一,这在所有浏览器中都可以正常工作。但是在 Firefox 上(有时在我的同事的 Safari 上,从不在 Chrome 上)如果我通过 http 访问 SSL_DOMAIN,首先发生的事情是 URL 立即重写为 NONSSL_DOMAIN 并且我被重定向到完全不同的域。
嗯?
查看 LB 上的日志,Chrome 和 Safari 的行为正常——在端口 80 上命中 lb——但 Firefox 从未在端口 80 上使用 SSL_DOMAIN 命中负载均衡器。但是 LB 看到它的时间是已经重写了。
我在 Firefox 上安装了 Tamper Data 插件,结果让我更加困惑。初始正确的 URL 标头永远不会收到回复标头。它立即被错误的替换。事情继续进行,就好像我打算使用非 SSL URL。
我查看了我的 /etc/hosts 文件(因为这是在测试中,我们正在覆盖这些域),一切看起来都是正确的。
如果您以前遇到过这样的问题,我将非常感谢有关如何调试它的提示。
【问题讨论】:
-
您被重定向到哪个域?听起来很可疑。恶意软件。
-
你用 301 rdirect 代替 302 吗?使用 301 浏览器不需要重新请求他已经完成的事情。尝试退出浏览器,为 302 删除 301 并重新检查篡改数据和实时 http 标头。
-
尽管我讨厌它,但它似乎是 MacOS 上的 Firefox 孤立的问题。我无法从我们的网络内部或外部复制 Windows 或 Linux 上的问题。我在本地主机上运行了 wireshark,在(错误的)firefox 情况下,重写发生在任何网络流量发生之前,然后获取了错误的网站。
-
另外,DarkXphenomenon,我被重定向到我们自己的其他非 SSL 域。你认为我们的服务器上有恶意软件吗?
标签: apache firefox redirect ssl haproxy