配置 nginx 以记录原始请求者 IP(而不是正向代理的 IP)

配置 nginx 以记录原始请求者 IP(而不是正向代理的 IP)

在我维护的一个启用了 nginx 的网站上,一些访问者位于某个正向代理后面。由于请求通过代理服务器,因此在这些情况下,HTTP 请求 IP 地址始终来自代理服务器,而不是来自原始请求者。

但是,代理会确保将原始请求者 IP 包含在名为 X-IORG-FBS-UIP 的单独 HTTP 标头字段中。它也可以在 X-FORWARDED-FOR 中找到。

在 nginx 访问日志中,我注意到所有这些用户显示的都是代理 IP,而不是真实 IP。如何配置 nginx,以便 nginx 记录原始请求者 IP,而不是代理 IP?最好能举个例子;提前谢谢!


我的 nginx 版本是 1.4.6

答案1

这是使用设置真实IP地址更新$remote_addr基于自定义标头的变量。例如,可以按如下方式创建,以基于和代理的请求的标头/etc/nginx/conf.d/proxies_acl.conf设置客户端 IP 变量:X-IORG-FBS-UIP1.2.3.0/2223.22.20.0/22

set_real_ip_from 1.2.3.0/22;
set_real_ip_from 23.22.20.0/22;
real_ip_header X-IORG-FBS-UIP;

相关内容