我在使用 Nginx 和 GeoIP 时遇到了以下问题,如果您能给我一些解决方案的指点,我将非常感激。
注意:我知道这可以在 DNS 端解决,但现在还不可能,所以我正在寻找其他解决方案。
问题
我的 www.domain.com 有 1.1.1.1 IP 地址,位于亚马逊,运行 Nginx,重定向如下:
location / {
proxy_pass http://2.2.2.2
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
在 2.2.2.2 上有另一个使用 geoIP 的 nginx。问题是我的所有客户端似乎都来自 1.1.1.1,因为第二个 nginx 是通过 进行地理定位的$remote_addr
。
有什么方法可以捕获真实客户端 IP(1.1.1.1 上的 ($remote_addr) 并将其作为不同的变量传递给 2.2.2.2,并在地理定位中使用它?
欢迎提供任何提示、评论或 RTFM。我会继续寻找解决方案来尝试回答这个问题。
谢谢。
答案1
在上游 nginx 上,使用真实IP模块X-Forwarded-For
从下游 nginx 发送的标头中获取真实 IP 。
例如:
server {
set_real_ip_from 1.1.1.1;
real_ip_header X-Forwarded-For;