$is_request_port

Переменная $is_request_port указывает, был ли запрос выполнен на альтернативном порту, а не на порту по умолчанию для протокола. — NGINX Core (HTTP)

$is_request_port NGINX Core (HTTP)

Описание

The `$is_request_port` variable is used to determine if the incoming HTTP request was made on a non-standard port, allowing the server to differentiate between requests made on the standard ports (80 for HTTP and 443 for HTTPS) and those made on alternate ports. This variable is evaluated during the request processing phase, specifically when the request is being parsed and before it reaches any handlers. Когда эта переменная установлена, она содержит значение '1', если запрос был сделан на альтернативном порту, и '0', если он был сделан на стандартных портах HTTP или HTTPS. Это особенно полезно в ситуациях, когда приложениям нужно применять определённые конфигурации, логирование или правила доступа в зависимости от порта, с которого пришёл запрос. Переменная автоматически инициализируется NGINX на основе информации о сокете входящего запроса и не требует ручной настройки. Разработчики часто используют эту переменную в сочетании с директивами контроля доступа или в условных блоках, чтобы предоставлять адаптированные ответы или вести логирование в зависимости от того, был ли запрос сделан на стандартный или нестандартный порт, тем самым повышая контроль над поведением сервера исходя из запросов клиентов.

Пример конфига

server {
    listen 8080;
    location / {
        if ($is_request_port) {
            return 403;  # Deny access from non-standard ports
        }
        # Other configurations...
    }
}

Подсистема

http

Кэшируется

Да

Контексты

http, server, location, if

Убедитесь, что заданные вами rewrite rules или access controls не блокируют непреднамеренно легитимный трафик при использовании этой переменной.

Учтите, что эта переменная принимает значение только 1 или 0 в зависимости от порта; она не предоставляет фактический номер порта.