$connection

The $connection 变量在 NGINX 中返回当前请求的连接描述符编号。 — NGINX Core (HTTP)

$connection NGINX Core (HTTP)

说明

$connection 变量是 NGINX 的内置变量,为服务器处理的每个请求提供唯一的连接标识符。它对调试和日志记录尤其有用,允许管理员在多个请求之间跟踪连接详情。该值基于 socket descriptor,并且是一个整数,会随着每次连接实例而变化。每当处理新的请求时,该变量都会被设置以标识所使用的连接,因此它有助于识别来自同一客户端的并发请求,或在日志中区分不同的用户。 在请求处理期间,当客户端连接到 NGINX 服务器时,会创建一个连接对象,其中包含各种与连接相关的信息,例如客户端地址、连接状态等。$connection 变量与该连接对象直接相关。由于每个客户端可能在单个连接上发出多个请求,因此在实现基于连接的逻辑(例如速率限制、访问控制和定制化日志记录)时,该变量非常有价值。 该变量的典型值是与系统当前连接相关的整数,也可以与通过 HTTP/2 多路复用流的请求关联,在那种情况下同一连接可以同时服务多个请求。请注意,由于 NGINX 使用异步事件驱动模型,同一 $connection 会在请求之间共享,直到连接关闭,此时将为新的连接分配新的标识符。

配置示例

server {
    listen 80;
    location / {
        access_log /var/log/nginx/access.log;
        log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$connection"';
    }
}

子系统

http

可缓存

上下文

http, server, location, if

在 if 语句中使用 $connection 可能导致意外行为,因为该变量在某些上下文中可能无法正确求值。

在使用 $connection 进行日志记录时,确保所记录的日志格式适当,以处理像 HTTP/2 这样的多值连接。