$realip_remote_addr
变量 $realip_remote_addr 在 NGINX 服务器部署在代理或负载均衡器之后时,包含原始客户端的 IP 地址。 — NGINX Core (HTTP)
说明
$realip_remote_addr 变量用于在 NGINX 被配置为在代理或负载均衡器后面运行时检索客户端的真实远程 IP 地址。 当客户端通过中间服务器连接时,通常会出现这种情况,标准连接方法难以确定原始客户端的 IP 地址。NGINX 通过使用 X-Real-IP 或 X-Forwarded-For HTTP headers 来有效处理这种情况,这些是传递源 IP 地址的常用标准。 当 NGINX 收到请求时,会按指定顺序检查这些 headers;如果在某个 header 中找到 IP 地址,就将 $realip_remote_addr 变量设置为该值。如果这些 header 不存在,则该变量默认为 NGINX 可见的直接客户端 IP 地址。正确解释此变量通常需要同时正确配置上游代理设置和用于传递客户端 IP 的 headers。这样可以确保显示和记录的信息正确,从而提高数据准确性和安全措施。 通常,$realip_remote_addr 的值要么反映发起请求的客户端的真实远程 IP 地址,要么在无法解析原始 IP 时回退到已知的最后一个 IP。在涉及多层网络的场景中,这一点尤为重要,因为它通过提供准确的客户端标识来增强日志记录和访问控制能力。
配置示例
http {
set_real_ip_from 192.0.2.0/24; # Allow this range to set the real IP
real_ip_header X-Forwarded-For; # Specify the header to use
server {
listen 80;
location / {
# Access can be logged with the original client's IP
access_log /var/log/nginx/access.log main;
}
}
}子系统
http可缓存
是上下文
http, server, location确保 `set_real_ip_from` 指令已正确设置,以允许特定代理 IP 修改客户端 IP。
对不受信任的代理要小心;否则可能导致 IP 欺骗。
必须将 `real_ip_header` 设置为代理请求使用的适当头(例如 `X-Forwarded-For` 或 `X-Real-IP`)。如果未设置,`$realip_remote_addr` 可能无法获得正确的值。