Переменная схемы nginx $ за балансировщиком нагрузки

Можно ли принудительно установить значение схемы nginx $ в "https", если nxinx работает за балансировщиком нагрузки?

В моем сценарии Балансировщик нагрузки заботится о связи https с клиентом и перенаправляет запросы в nginx как необработанный http. Я знаю, что могу сделать что-то вроде этого, чтобы обнаружить https

set $my_scheme "http";
if ($http_x_forwarded_proto = "https") {
    set $my_scheme "https";
}  

но мне просто любопытно, если есть что-то вроде real_ip_header функция для IP.

Есть ли какие-то заголовки, которые мне нужно обновить при обнаружении https вручную?

1 ответ

Решение

Наши настройки такие же, как у вас, только с использованием map вместо if/set (в соответствии с рекомендациями разработчиков nginx).

# Sets a $real_scheme variable whose value is the scheme passed by the load
# balancer in X-Forwarded-Proto (if any), defaulting to $scheme.
# Similar to how the HttpRealIp module treats X-Forwarded-For.
map $http_x_forwarded_proto $real_scheme {
  default $http_x_forwarded_proto;
  ''      $scheme;
}

PS согласен, а real_scheme модуль был бы хорош!

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