geoip2
`geoip2` 指令允许使用 GeoIP2 数据库,根据客户端 IP 地址的地理位置创建变量。
NGINX GeoIP2 module
·
http
语法geoip2 PATH_TO_DATABASE { ... }
默认值none
上下文http
参数block (1)
说明
geoip2 指令在 NGINX 的 GeoIP2 模块中允许用户配置如何访问和使用来自 MaxMind 的 GeoIP2 数据库的地理位置信息。它同时支持 IPv4 和 IPv6,允许定义与特定地理信息对应的变量,例如基于客户端 IP 地址的国家代码或城市名称。此外,该指令还允许在指定间隔自动重新加载数据库,从而确保底层数据的更改在不重启 NGINX 的情况下生效。
geoip2 块内的参数可以指定 GeoIP2 数据库文件的路径、用于元数据检索的选项以及地理数据的变量定义。$geoip2_metadata_country_build 等类似变量可用于访问诸如数据库构建时间之类的元数据,而用于数据检索的变量可以包含在无数据时的默认值,或指定用于查找的备用 IP 的源变量。这种灵活性使该指令能够适应各种配置需求,并在 HTTP 和 stream 上下文中实现高效的地理定位处理。
如果数据库文件路径不正确或所需的 MaxMind 库未安装,可能会发生错误。验证配置并确保数据库格式正确以避免运行时问题非常重要。
配置示例
http {
geoip2 /etc/maxmind-country.mmdb {
auto_reload 5m;
$geoip2_metadata_country_build metadata build_epoch;
$geoip2_data_country_code default=US source=$variable_with_ip country iso_code;
$geoip2_data_country_name country names en;
}
}⚠
确保 MaxMind 数据库文件路径正确以避免错误。
⚠
如果数据库格式不正确,变量检索将失败。
⚠
默认情况下自动重新加载被禁用;如有需要请显式启用。