geoip2_proxy

`geoip2_proxy` 指令指定用于基于代理的 IP 头进行 GeoIP 查询的源 IP 地址。

语法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 头部。

← 返回所有指令