$https

Переменная $https указывает, был ли запрос выполнен по HTTPS (защищённо) или нет. — NGINX Core (HTTP)

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