$remote_addr

变量 $remote_addr 保存向 NGINX 服务器发出请求的客户端的 IP 地址。 — NGINX Core (HTTP)

$remote_addr NGINX Core (HTTP)

说明

当客户端向服务器发出请求时,NGINX 会填充变量 $remote_addr。它直接从请求的 socket 信息获取客户端的 IP 地址,具体来自与连接关联的 `struct sockaddr`。该变量在访问控制和日志记录场景中至关重要,在这些场景中,了解请求的源 IP 可以决定响应行为或记录来源以便审计。 如果 NGINX 服务器位于反向代理或负载均衡器之后,可能需要结合其他变量(例如 $http_x_forwarded_for)来补充 $remote_addr,以准确反映客户端的原始 IP 地址。在标准配置中,该值通常是 IPv4 或 IPv6 地址,分别用点分十进制或冒号分隔的格式表示。 在将此变量用于访问控制设置时(例如使用 allow/deny 指令),服务器可以基于客户端 IP 做出实时决策,通过允许或阻止特定 IP 的访问来增强安全性。该变量的多功能性使其成为 NGINX 中安全性和分析配置的基础元素。

配置示例

location / {
    deny 192.168.1.0/24;
    allow all;
    access_log /var/log/nginx/access.log combined;
}

子系统

http

可缓存

上下文

http, server, location, if

如果 NGINX 位于负载均衡器或反向代理之后,除非使用代理头正确配置,否则 $remote_addr 可能无法反映真实的客户端 IP。

使用反向代理时,应小心在 'set_real_ip_from' 中配置受信任的代理,以减轻 IP 地址伪造的风险。