Apache的启用了SSL的虚拟主机随机返回400错误的请求
题
我设置两个本地虚拟主机(HTTP和自签名HTTPS)的billing.example.com与萤火想他们在Firefox。 HTTP虚拟主机唯一的目的是重定向的所有请求到https。
从https,一个或两个文件与相关联的资源(图像,JS,CSS等),有时PHP页面本身的萤火窗口返回400错误的请求,有时一个或两个文件显示几乎每次我请求页作为加载时间长。 当我在Firebug问题链接,文件加载点击,因为它应该。 此外,不良的请求或没有加载的文件几乎每个我时间改变加载页面。
任何想法?
服务器:Ubuntu的10.04,阿帕奇/ 2.2.14与mod_ssl的
虚拟主机:
Listen 80
<VirtualHost *:80>
ServerName billing.example.com
UseCanonicalName On
DocumentRoot /code/site/billing
...
RewriteEngine On
RewriteRule ^/(.*)$ https://billing.example.com/$1
</VirtualHost>
Listen 443
<VirtualHost *:443>
ServerName billing.example.com
UseCanonicalName On
DocumentRoot /code/site/billing
...
SSLEngine On
SSLCertificateFile /code/site/ssl/example.crt
SSLCertificateKeyFile /code/site/ssl/example.key
</VirtualHost>
其余的是从Ubuntu的apache2的默认设置。
解决方案
我是有这个问题与Apache 2.2.9和升级到Apache 2.2.22解决了这个问题,我
我会得到一些页面请求的随机400响应代码。有时图像,有时AJAX请求。偶尔这将是在网页本身,将与该消息一起返回400。
错误的请求 您的浏览器发送的请求,该服务器无法理解。 请求头域不存在“:”分隔符。 活
我发现,下面的地毯报告似乎有关。该错误是固定在阿帕奇2.2.15: https://bugzilla.redhat.com/show_bug的CGI?ID = 652335
我觉得这个bug是很多随机误差的原因使用HTTPS时: 您的浏览器发送的请求,该服务器无法理解 请求头字段缺失“:”。分离器
于是想我会尝试更新至最新的mod_ssl最新版的Apache - 这似乎工作
。其他提示
对于SSL部分,你可能需要打开UseCanonicalName Off
对于虚拟主机,你可能使用了不同的域比主服务器,并可能导致您寻找文件的虚拟主机之外。
有关端口80完整性,我会[R,L]添加到重定向。
RewriteEngine On
RewriteRule ^/(.*) http://billing.example.com/$1 [L,R]