问题描述
我一直在努力让这个东西正常工作,但似乎无论我做什么,X-Country
都会得到值“US”,因为这是最后一个 IP 地址的国家/地区X-Forwarded-To
标头。这是 Google 的负载平衡器之一。
我似乎也找不到很多在线正确配置的示例,我发现的大部分源代码都是针对 GeoIP v1 的。
文件 /usr/share/GeoIP/GeoLite2-Country.mmdb 存在并且已经过验证,可以为我正在测试的 IP 地址返回正确的国家/地区。 Sentry Python SDK 还根据标头中的第一个 IP 将 IP 地址解析为瑞典。
http {
...
geoip2_proxy 130.211.0.0/22;
geoip2_proxy 35.191.0.0/16;
geoip2_proxy_recursive off;
geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
$geoip2_data_country_code default=SE country iso_code;
auto_reload 5m;
}
...
}
server {
...
location / {
...
proxy_set_header X-Country $geoip2_data_country_code;
...
}
}
有什么想法吗?
如果我删除所有 GeoIP2 配置,这是 Nginx 变量的状态:
GET /foobar HTTP/1.1
remote_addr: 130.211.0.x
http_x_forwarded_for: <my.real.ip>,130.211.38.x
realip_remote_addr: 130.211.0.x
http_x_real_ip: -
proxy_add_x_forwarded_for: <my.real.ip>,130.211.38.x,130.211.0.x
似乎没有 set_real_ip_from
等的组合只会分配任何变量 <my.real.ip>
以便我可以使用它。
编辑:以下似乎有效,但我认为它容易被欺骗:
geoip2_proxy 0.0.0.0/0;
geoip2_proxy_recursive on;
geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
$geoip2_data_country_code default=SE country iso_code;
}
所以我的 geoip2_proxy
声明似乎有问题,但我不确定如何?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)