$proxy_protocol_server_addr

$proxy_protocol_server_addr 返回在 NGINX 中启用 proxy protocol 时由 proxy protocol 发送的客户端 IP 地址。 — NGINX Core (HTTP)

$proxy_protocol_server_addr NGINX Core (HTTP)

说明

$proxy_protocol_server_addr 变量主要用于涉及 proxy protocol 的配置。proxy protocol 是一项功能,允许 NGINX 在通过另一层(例如 AWS ELB 或其他 reverse proxies)代理请求时接收原始客户端的 IP 地址和端口。该变量在使用 'proxy_protocol' 指令在 server 或 location 块上启用 proxy protocol 时被填充。其值反映了从 proxy protocol 报头解析出的客户端 IP 地址,因此对于基于真实客户端地址而非直接代理地址进行准确的日志记录或访问控制至关重要。 当该变量被设置时,可以显著提高指标和日志的准确性,因为可以跟踪实际客户端地址而不是 reverse proxy 的 IP。如果未使用 proxy protocol 或未正确配置,$proxy_protocol_server_addr 的值将为空字符串。因此,通常会将此变量与其他代理变量结合使用,以确保正确捕获原始客户端的信息。

配置示例

server {
    listen 80 proxy_protocol;
    location / {
        access_log /var/log/nginx/access.log '$proxy_protocol_server_addr';
    }
}

子系统

http

可缓存

上下文

http, server, location

确保显式启用 proxy protocol;否则,此变量将不会被填充。

upstream proxy 的错误配置可能导致值为空或不正确。

如果位于多层代理之后,请确保保留正确的 proxy protocol headers。