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