NGINX 未正确设置 X-Forwarded-For
NGINX does not set X-Forwarded-For properly
我有一个 NGINX 服务器充当其他几个服务器的load-balancer。因为我需要访问用户的 IP 地址,所以我在我的 nginx 配置中添加了以下行:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后,在后端服务器中,我简单地使用X-Forwarded-Forheader中的第一个IP地址。但是,每隔几分钟(每 ~2K 个请求一次),我得到 unknown, xxx.xxx.xxx.xxx
作为 header 的值,其中 xxx.xxx.xxx.xxx
是一个 IP 地址(每次都不同)。这个问题的根源可能是什么?
从 the documentation 开始,$proxy_add_x_forwarded_for
变量包括:
the “X-Forwarded-For” client request header field with the
$remote_addr variable appended to it, separated by a comma.
If the “X-Forwarded-For” field is not present in the client request
header, the $proxy_add_x_forwarded_for variable is equal to the
$remote_addr variable.
由此我们可以得出结论,nginx
收到了来自某个远程客户端(可能是转发代理)的请求,请求 header 为:
X-Forwarded-For: unknown
我有一个 NGINX 服务器充当其他几个服务器的load-balancer。因为我需要访问用户的 IP 地址,所以我在我的 nginx 配置中添加了以下行:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
然后,在后端服务器中,我简单地使用X-Forwarded-Forheader中的第一个IP地址。但是,每隔几分钟(每 ~2K 个请求一次),我得到 unknown, xxx.xxx.xxx.xxx
作为 header 的值,其中 xxx.xxx.xxx.xxx
是一个 IP 地址(每次都不同)。这个问题的根源可能是什么?
从 the documentation 开始,$proxy_add_x_forwarded_for
变量包括:
the “X-Forwarded-For” client request header field with the $remote_addr variable appended to it, separated by a comma.
If the “X-Forwarded-For” field is not present in the client request header, the $proxy_add_x_forwarded_for variable is equal to the $remote_addr variable.
由此我们可以得出结论,nginx
收到了来自某个远程客户端(可能是转发代理)的请求,请求 header 为:
X-Forwarded-For: unknown