Apache vhost с поддержкой Apache возвращает случайный 400 неверный запрос - PullRequest
4 голосов
/ 27 октября 2010

Я установил два локальных vhosts (http и самоподписанный https) для billing.example.com и пробовал их в firefox с помощью firebug. Единственная цель http vhost - перенаправление всех запросов на https.

Почти каждый раз, когда я запрашиваю страницу из https, один или два файла со связанными ресурсами (изображения, js, css и т. Д.), А иногда и сама страница php возвращает 400 неверных запросов в окне firebug, иногда отображается один или два файла как долго грузится. Когда я нажимаю на ссылку проблемы в 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.

Ответы [ 2 ]

0 голосов
/ 22 августа 2012

У меня была эта проблема с 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: Ваш браузер отправил запрос, который этот сервер не может понять Поле заголовка запроса отсутствует ':' разделитель.

Итак, я подумал, что я попробую обновиться до последней версии apache с последней версией mod_ssl - и это, похоже, сработало.

0 голосов
/ 28 октября 2010

Для части ssl вы можете включить UseCanonicalName Off Для виртуальных хостов вы, вероятно, используете домен, отличный от основного сервера, и это может привести к поиску файлов за пределами виртуального хоста.1003 * Для полноты на порту 80 я бы добавил [R, L] к перенаправлению.

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