Nginx 重定向和地理定位

Nginx 重定向和地理定位

我在使用 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;

相关内容