Наши сетевые операторы настроили завершение SSL, а затем отправили нам запрос через обратный прокси. Их требование состоит в том, что, если они увидели ввод на порт 443, мы должны обслуживать контент на порту 443, поэтому мы обслуживаем незашифрованный контент на порту 443. Это инвариант, который мы должны обойти.
По большей части это не проблема. Мы Listen 443
и не настраивайте SSL, и все работает, кроме ... перенаправления.
Например, если мы определим:
Alias /foo /path/to/foo
<Directory /path/to/foo>
...
</Directory>
Apache достаточно умен, чтобы перенаправить запрос на /foo
к /foo/
. Когда мы используем http на 80-м порту, он отлично работает. Однако, когда клиент использует https на порту 443, мы получаем перенаправление с Location
это выглядит так:
Location: http://my.example.com:443/foo/
Проблема в том, что мы не хотим перенаправлять с безопасного протокола на небезопасный, но это не имеет значения, поскольку мы не обслуживаем небезопасный контент через порт 443.
Я предполагаю, что есть лучший способ сообщить Apache, что этот запрос изначально был безопасным, но я не очень хорошо знаю конфигурацию Apache. Надеюсь, мне не придется вручную создавать перенаправление для каждого Directory
вход, тем более что некоторый контент доступен как в защищенной, так и в незащищенной форме.
У кого-нибудь есть указатели на документы, которые могут помочь (к сожалению, я не могу придумать правильное заклинание Google, чтобы помочь)? Также приветствуются указатели на лучший способ справиться с этим. :)
Этот сценарий описан в документации для Название сервера:
Иногда сервер работает за устройством, которое обрабатывает SSL, например обратным прокси, балансировщиком нагрузки или устройством разгрузки SSL. В этом случае укажите схему https: // и номер порта, к которому подключаются клиенты, в директиве ServerName, чтобы убедиться, что сервер генерирует правильные ссылочные URL-адреса.
Если вы хотите сделать это и одновременно поддерживать работу порта 80, вам придется использовать VirtualHost по крайней мере для одного из них, поэтому вы можете добавить отдельный ServerName.