$protocol
NGINX Stream 上下文中的变量 $protocol 返回连接所使用的协议,例如 TCP 或 UDP。 — NGINX Core (Stream)
$protocol
NGINX Core (Stream)
说明
$protocol 变量在 NGINX Stream 中是自动设置的变量,会在与其他 stream 指令相同的作用域内可用,尤其是在 stream 块执行期间。此变量指示已建立连接的协议,表明是 TCP 还是 UDP。它主要用于便于基于所处理协议类型进行日志记录、访问控制或条件配置。 当与 server 建立连接时,会根据 server 和 upstream 块中指定的协议设置此变量。该变量的典型值包括 '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 block 已被正确定义;否则,该变量将不会被设置。
⚠
$protocol 变量仅在 stream contexts 中可用,而不在 http context 或其他 contexts 中可用。