![带有 X_Forwarded 和 HAProxy 的 Nginx HttpGeoIPModule](https://linux22.com/image/532424/%E5%B8%A6%E6%9C%89%20X_Forwarded%20%E5%92%8C%20HAProxy%20%E7%9A%84%20Nginx%20HttpGeoIPModule.png)
是否可以让 Nginx HttpGeoIPModule 使用通过 HAProxy 发送的 X_Forwarded IP?目前它只是使用了错误的服务器 IP,但不确定如何让 Nginx 使用 X_Forwarded IP。
有任何想法吗?
答案1
您是否尝试过使用 RealIPModule 并将 X-Real-IP 设置为 X-Forwarded-For
您必须在编译时传递 --with-http_realip_module 来构建模块,因为它不是默认构建的。
答案2
Sameer 的回答是正确的。
您需要使用 --with-http_realip_module 选项配置和编译 Nginx。
然后在 Nginx 配置中设置以下选项:
set_real_ip_from 1.2.3.4;
real_ip_header X-Forwarded-For;
其中 1.2.3.4 是 HAProxy 的 IP 地址
在 HAProxy 中,您需要以下选项:
option httpclose
option forwardfor
我发现这个网站很有帮助:http://www.somerorbay.com/vps-and-dedicated/nginx-behind-haproxy-x-forwarded-for-getting-real-client-ip
答案3
另一个选项是在透明模式下运行 HA Proxy,这样所有 IP 都会正确显示。通常需要对 IP 表进行一点“调整”才能使其工作,但值得付出努力。