Виртуальный хост Apache с поддержкой SSL возвращает случайный 400 неверных запросов

StackOverflow https://stackoverflow.com/questions/4035822

Вопрос

Я настроил два локальных виртуальных хоста (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.

Это было полезно?

Решение

У меня возникла проблема с 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 - и это, похоже, сработало.

Другие советы

Для части SSL вы можете повернуть UseCanonicalName Off Для виртуальных хостов вы, скорее всего, используете другой домен, чем основной сервер, и это может привести к поиску файлов за пределами виртуального хоста.

Для полноты на порту 80 я бы добавил [R, L] на перенаправление.

RewriteEngine  On
RewriteRule    ^/(.*) http://billing.example.com/$1 [L,R]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top