$https
Переменная $https указывает, был ли запрос выполнен по HTTPS (защищённо) или нет. — NGINX Core (HTTP)
Описание
Переменная $https — встроенная переменная в NGINX, которая используется для определения, обрабатывается ли текущий запрос по HTTPS. Когда запрос обрабатывается по защищённому соединению, $https устанавливается в 'on'. Если запрос не защищён (т.е. обслуживается по HTTP), эта переменная возвращает 'off'. Эта переменная особенно полезна для перенаправления HTTP-трафика на HTTPS или для настройки условных ответов в зависимости от безопасности соединения. Значение переменной $https, как правило, устанавливается, когда NGINX настроен с корректным SSL-сертификатом и прослушивает HTTPS-порты. Например, если блок server в NGINX указывает SSL-сертификат и прослушивает порт 443, $https будет установлен в 'on' для входящих запросов в этом блоке. И наоборот, если нет конфигурации SSL и сервер прослушивает порт 80, переменная будет 'off'. Важно отметить, что эта переменная принимает только значения 'on' или 'off'.
Пример конфига
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
if ($https = off) {
return 301 https://$host$request_uri;
}
# Handle the secure request
}
}Подсистема
httpКэшируется
ДаКонтексты
http, server, location, ifУбедитесь, что SSL настроен правильно; в противном случае $https может не работать должным образом.
Переменная может быть ненадёжной, если NGINX находится за прокси, который выполняет SSL-терминацию; используйте соответствующие заголовки, чтобы проверить исходную схему соединения.