Отключить переменную среды HTTPS, когда X-Forwarded-Proto имеет http
У меня есть настройка завершения конечной точки на моем Google Cloud Platform HTTP Load Balancer и HTTPS, установленные в качестве протокола для связи с моими бэкэндами.
Это означает, что все запросы, HTTP или HTTPS, являются HTTPS для apache. Проблема в том, что HTTPS
переменная окружения установлена в on
даже когда X-Forwarded-Proto
установлен в http
,
Все мои исследования и тестирование указывают только на обратный случай (настройка HTTPS
в on
когда X-Forwarded-Proto
является https
через SetEnvIf X-Forwarded-Proto https HTTPS=on
правило).
Но мне нужно что-то сбросить HTTPS
когда X-Forwarded-Proto
является http
,
Я пытался установить SSLOptions -StdEnvVars
а также много комбинаций SetEnvIf
, SetEnv
, а также UnsetEnv
, Установка его через mod_rewrite не подходит для меня (я не знаю, будет ли он работать в любом случае). Интересная заметка об отключении StdEnvVars
является то, что даже когда он выключен, все связанные с SSL переменные исчезли, кроме HTTPS
и я могу подтвердить, что ничто другое не устанавливает его в любом из моих файлов конфигурации.
Редактировать:
Некоторые примеры директив, которые я пробовал в моей конфигурации сервера, vhost и htaccess:
SetEnvIf X-Forwarded-Proto http HTTPS=Off
SetEnvIf X-Forwarded-Proto http HTTPS=0
SetEnvIf X-Forwarded-Proto http !HTTPS
SetEnv HTTPS Off
SetEnv HTTPS 0
SetEnv HTTPS
UnsetEnv HTTPS
Использование этих директив с другими переменными, включая такие тесты, как foo
работает просто отлично.
1 ответ
Использование этих директив с другими переменными, включая такие тесты, как foo, прекрасно работает.
Сначала просто идея (с удовольствием отрекаюсь, если у кого-то есть идея получше)
Целевые прокси
Целевые прокси завершают соединения HTTP(S) от клиентов, на них ссылаются одно или несколько правил глобальной пересылки и маршрутизируют входящие запросы на карту URL.
Прокси устанавливают заголовки HTTP-запроса / ответа следующим образом:
- С помощью:
1.1 google
(запросы и ответы)X-Forwarded-Proto: [http | https]
(только запросы)X-Forwarded-For: <client IP(s)>, <global forwarding rule external IP>
(только запросы) Может быть списком IP-адресов, разделенных запятыми, в зависимости от записей X-Forwarded-For, добавленных посредниками, через которые проходит клиент. Первый элемент в разделе показывает адрес отправителя.
Вопрос в том, где это установлено. Если в конфигурационных файлах apache вы можете просто изменить конфигурацию. Если он установлен где-то еще, вам нужно выяснить, где.
Ресурс TargetHttpsProxies также не содержит никаких способов его изменения. Так как насчет публикации файлов конфигурации, которые ведут к описанному выше поведению?