$proxy_protocol_tlv_*

$proxy_protocol_tlv_ 变量用于访问包含在 Proxy Protocol TLV (Type-Length-Value) 格式中的信息。 — NGINX Core (HTTP)

$proxy_protocol_tlv_* NGINX Core (HTTP)

说明

$proxy_protocol_tlv_ 变量是 NGINX 中带前缀的变量,用于在使用 Proxy Protocol 时检索特定的 Type-Length-Value (TLV) 数据。该协议常用于负载均衡场景,以结构化格式将连接信息(例如客户端 IP 地址)从代理服务器传输到后端服务器。每个 TLV 数据项可以通过一个后缀来访问,该后缀标识所请求的具体信息。 当 NGINX 被配置为从直接客户端连接接收 Proxy Protocol 时,通常会设置这些变量,例如在接收来自也实现该协议的负载均衡器或代理服务器的流量时。常见的 TLV 类型可能包括诸如客户端地址、端口号和其他头部数据等信息。这种附加功能使后端服务器能够基于通常由于 NAT 或其他网络设置而掩盖真实客户端 IP 的客户端数据做出更有依据的决策。 例如,如果某个 TLV 项目使用与客户端地址信息相对应的后缀指定,则该变量将返回由代理发送的相关信息。如果上游代理服务器未提供对应的 TLV 数据,该变量将为空或未设置。在需要基于来源客户端详细信息进行精确流量记录或定制的场景中,这种行为尤其有用,从而提升整体应用性能和用户体验。

配置示例

server {
    listen 80 proxy_protocol;

    location / {
        default_type text/plain;
        return 200 "Client IP: $proxy_protocol_tlv_client_ip\n";
    }
}

子系统

http

可缓存

类型

前缀变量

上下文

http, server, location

确保在 upstream proxy 上启用 Proxy Protocol,以便填充这些 variables,否则这些 variables 将保持未设置。

错误配置 Proxy Protocol 设置可能导致 variables 的值为空,从而引发意外的应用行为或错误。