IE9 和 apache SSL nokeepalive 设置

IE9 和 apache SSL nokeepalive 设置

目前,我正在使用 Apache 2.2.3 和 CentOS 5.4 作为 php 应用程序(php 在 5.3.7 上运行),并且应用程序在 HTTPS 上运行并具有 Root CA 证书。

问题是我们在使用 IE9(仅限 IE9)时遇到了一些奇怪的问题。当 IE9 浏览器向我们的服务器提交 HTTPS 请求时,有时没有 HTTPS 响应。我注意到 IE9 会刷新页面。更具体地说,提到的页面是登录页面。因此,当我输入用户名和密码并提交表单时,没有响应,IE9 似乎再次重新加载相同的登录页面。(用户名和密码为空)

当从应用程序级别跟踪时,我确实注意到我已经收到了用户名和密码,并且应用程序没有错误地结束。

最头疼的是每次都无法重现,有时候可以正常登录,但有时候就会出现上面提到的问题。

现在我们公司有网络团队、开发人员和其他团队。我们的 Apache 在负载平衡器下运行。网络人员声称他们从不更改任何设置,唯一的变化是我们的应用程序。但从开发人员的角度来看,这些变化与登录过程无关。

从我的角度来看,似乎一旦用户单击“提交”,应用程序(apache)就会发送 HTML(HTTPS 响应),但 HTML 却奇迹般地消失在网络中。我怀疑这与连接保持有关?可能 IE9 浏览器代理对此的处理方式不同,并且它以某种方式认为连接失败并重新加载页面以进行重试?

但无论如何,我注意到 Apache 中用于 SSL 连接的以下设置:

设置环境变量为“用户代理”。MSIE。“\nokeepalive ssl-unclean-shutdown\降级-1.0 强制响应-1.0

不确定我们如何设置以排除 IE9 及以上版本?当我进行搜索时,上述设置是为了修复 IE 与 Apache 连接时的一些长期存在的问题。但由于 IE9 相当新,问题可能已经修复,我们需要更新设置吗?

希望有人可以对此作出一些解释。

答案1

最有可能的是服务器/网络设置在某个地方存在问题,而不是由 IE9 的任何怪癖引起的。

首先,摆脱古老的 IE6 之前的配置:SetEnvIf User-Agent ".MSIE." \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0然后尝试完全不使用该配置(以任何形式)。除非您需要支持 IE5,我怀疑您是否需要,在这种情况下,将正则表达式更改为MSIE [2-5]

负载均衡器和没有 keepalive 可能是问题所在。我会非常怀疑负载均衡器,并首先检查那里到底发生了什么。

负载平衡器通常会在两个或多个 IP 地址(此时内部或外部并不重要)之间“平衡负载”。

然后,由于请求之间的连接没有保持活动状态,客户端计算机/浏览器将不得不对每个请求执行 SSL 协商。再加上速度慢和超时设置低,我们可能会遇到 SSL 证书不匹配问题,并且 IE 可能会因为严格的安全设置而放弃。我还没有调查过 IE9 是否只具有此特性。我怀疑其他浏览器也会这样做,并以不同的方式处理它。

如果你使用 SSL,则应该活着因为它将使网站速度更快,而不必一遍又一遍地进行 SSL 协商,从而导致失败,因为负载平衡器在访问者的生命周期内不会将会话保持在同一台服务器上。

如果您的应用程序是内部的(在内部网上),您的负载均衡器会随机跳转您的 IP 地址,并且 SSL 需要每个连接的 IP 地址相同。

如果不在内部网上,情况可能也一样,我不知道您的网络是如何设置的,但您应该先检查一下。禁用负载平衡器,看看问题是否存在。并且一定要启用保持活动。

http://httpd.apache.org/docs/2.2/mod/core.html#keepalive

我还会检查您是否设置了反向 DNS。它是否指向负载均衡器或负载均衡器后面的服务器,或者其他什么。

测试你的连接并分析你的报头,如果是外部使用类似redbot.org或者网页测试网站检查发送了哪些标头。您还可以使用类似提琴手

相关内容