Apache ssl-enabled vhost返回随机400错误请求

时间:2010-10-27 17:13:37

标签: ssl https apache2 vhosts mod-ssl

我为billing.example.com设置了两个本地虚拟主机(http和自签名https),并在firefox中使用firebug进行尝试。 Http vhost唯一目的是将所有请求重定向到https。

几乎每次我从https请求页面时,一个或两个带有相关资源的文件(图像,js,css等等),有时php页面本身在firebug窗口中返回400个错误请求,有时会显示一个或两个文件因为装了很长时间。 当我点击firebug中的问题链接时,文件会按原样加载。 此外,每次我加载页面时,糟糕的请求或未加载的文件几乎都会发生变化。

有什么想法吗?

服务器:Ubuntu 10.04,Apache / 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>

Rest是ubuntu apache2的默认设置。

2 个答案:

答案 0 :(得分:0)

对于ssl部分,您可能希望转为UseCanonicalName Off对于虚拟主机,您可能使用与主服务器不同的域,这可能会导致您在虚拟主机之外查找文件。

为了在端口80上完整,我将[R,L]添加到重定向。

RewriteEngine  On
RewriteRule    ^/(.*) http://billing.example.com/$1 [L,R]

答案 1 :(得分:0)

我遇到apache 2.2.9这个问题,升级到apache 2.2.22解决了我的问题。

我会在某些页面请求上获得随机的400响应代码。有时是图像,有时是AJAX请求。有时,页面本身会返回400以及此消息。

  

错误请求   您的浏览器发送了此服务器无法理解的请求。   请求标头字段缺少':'分隔符。   活

我发现以下地毯报告似乎有关。该错误已在apache 2.2.15修复:https://bugzilla.redhat.com/show_bug.cgi?id=652335

  

我认为这个错误是导致使用https时出现大量随机错误的原因:   您的浏览器发送了此服务器无法理解的请求   请求标头字段缺少':'分隔符。

所以我想我会尝试使用最新的mod_ssl更新到最新的apache - 这似乎有效。