Переменная схемы 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
модуль был бы хорош!