geoip2_proxy
`geoip2_proxy` 指令指定用于基于代理的 IP 头进行 GeoIP 查询的源 IP 地址。
NGINX GeoIP2 module
·
http
语法geoip2_proxy ;
默认值none
上下文http
参数1
说明
geoip2_proxy 指令允许用户配置 NGINX 以读取已被代理或负载均衡器转发的客户端 IP 地址。这在请求由代理服务器处理的环境中特别有用,代理服务器会使用特定的头(例如 X-Forwarded-For)将原始客户端的 IP 地址传递给后端服务器。该指令期望一个参数,应该指向承载 IP 信息的头部,从而使 NGINX 能够基于客户端的原始 IP 从 GeoIP2 数据库准确解析地理信息。
该指令与 GeoIP2 模块配合工作,后者根据 MaxMind 地理数据库生成用于国家和城市数据的变量。通过配置 geoip2_proxy,可以确保请求基于客户端的真实 IP(而非代理的 IP)被正确分析。如果不设置,NGINX 通常会使用其直接可见的 IP 来分析被代理的请求,这可能导致位于代理后的用户的地理位置数据不正确。
配置示例
http {
geoip2 /etc/maxmind-country.mmdb {
geoip2_proxy $http_x_forwarded_for;
$geoip2_data_country_code default=US source=$remote_addr country iso_code;
}
}⚠
确保代理正确设置指定的头部;否则,地理定位可能失败或返回不正确的结果。
⚠
检查是否正确处理 IPv4 和 IPv6 的地址格式,因为配置不当可能导致意外结果。
⚠
重新配置 NGINX 以忽略某些内部头部,防止因可能的伪造而导致的暴露。如果未正确设置,恶意用户可能传入任意的 X-Forwarded-For 头部。