Обслуживание http с помощью Apache на порту 443 за SSL-терминатором

Обслуживание http с помощью Apache на порту 443 за SSL-терминатором

Наши сетевые операторы настроили 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, чтобы помочь)? Указания на лучший способ справиться с этим также приветствуются. :)

решение1

Этот сценарий описан в документацииИмя сервера:

Иногда сервер работает за устройством, которое обрабатывает SSL, например, обратным прокси-сервером, балансировщиком нагрузки или устройством разгрузки SSL. В этом случае укажите схему https:// и номер порта, к которому подключаются клиенты, в директиве ServerName, чтобы убедиться, что сервер генерирует правильные URL-адреса с самоссылкой.

Если вы хотите сделать это и в то же время сохранить работоспособность порта 80, вам придется использовать VirtualHost как минимум для одного из них, поэтому вы можете добавить отдельное ServerName.

Связанный контент