Отключить переменную среды 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 также не содержит никаких способов его изменения. Так как насчет публикации файлов конфигурации, которые ведут к описанному выше поведению?

Другие вопросы по тегам