4

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

几乎每次我从 https 请求页面时,都会有一个或两个具有相关资源(图像、js、css 等)的文件,有时 php 页面本身会在 firebug 窗口中返回 400 bad request,有时会显示一两个文件加载很长时间。当我单击 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>

其余是 ubuntu apache2 的默认设置。

4

2 回答 2

0

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

为了端口 80 的完整性,我会将 [R,L] 添加到重定向中。

RewriteEngine  On
RewriteRule    ^/(.*) http://billing.example.com/$1 [L,R]
于 2010-10-28T03:06:48.250 回答
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——这似乎奏效了。

于 2012-08-22T09:51:36.793 回答