$protocol

Переменная $protocol в контексте NGINX Stream возвращает протокол, используемый в соединении, например TCP или UDP. — NGINX Core (Stream)

$protocol NGINX Core (Stream)

Описание

Переменная $protocol в NGINX Stream — автоматически задаваемая переменная, которая становится доступной в той же области видимости, что и другие stream directives, особенно во время stream block execution. Эта переменная указывает протокол установленного соединения — TCP или UDP. Она преимущественно используется для организации логирования, управления доступом или условной конфигурации в зависимости от типа обрабатываемого протокола. Переменная устанавливается при установлении соединения с сервером, в зависимости от протокола, указанного в server и upstream blocks. Типичные значения этой переменной включают 'tcp' и 'udp', что даёт чёткое различие типов обрабатываемого трафика. Это особенно полезно в средах, где один и тот же процесс сервера обрабатывает как TCP, так и UDP, позволяя применять разные конфигурации и стратегии логирования в зависимости от протокола.

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

stream {
    server {
        listen 12345;
        proxy_pass backend;
        log_format custom_format '$remote_addr - $protocol';
        access_log /var/log/nginx/access.log custom_format;
    }
}

Подсистема

stream

Кэшируется

Да

Контексты

stream, server

Убедитесь, что блок stream правильно определён; в противном случае переменная не будет установлена.

Переменная $protocol доступна только в контекстах stream, а не в контексте http или в других контекстах.