ngx_http_geoip_module 模块(0.8.6+)使用预编译的 MaxMind 数据库创建变量,其值取决于客户端 IP 地址。
当使用支持 IPv6 的数据库(1.3.12、1.2.7)时,IPv4 地址被查找为 IPv4 映射的 IPv6 地址。
这个模块不是默认构建的,它应该使用 --with-http_geoip_module 配置参数启用。
该模块需要 MaxMind GeoIP 库。
http { geoip_country GeoIP.dat; geoip_city GeoLiteCity.dat; geoip_proxy 192.168.100.0/24; geoip_proxy 2001:0db8::/32; geoip_proxy_recursive on; ...
语 法:geoip_country file; 默认值:— 上下文:http
指定用于根据客户端 IP 地址确定国家/地区的数据库。使用此数据库时,以下变量可用:
$geoip_country_code 两个字母的国家/地区代码,例如 “RU”、“US”。
$geoip_country_code3 三个字母的国家/地区代码,例如 “RUS”、“USA”。
$geoip_country_name 国家名称,例如 “俄罗斯联邦”、“美国”。
语 法:geoip_city file; 默认值:— 上下文:http
指定用于根据客户端 IP 地址确定国家、地区和城市的数据库。使用此数据库时,以下变量可用:
$geoip_area_code 电话区号(仅限美国)。此变量可能包含过时的信息,因为不推荐使用相应的数据库字段。
$geoip_city_continent_code 两个字母的大陆代码,例如 “EU”、“NA”。
$geoip_city_country_code 两个字母的国家/地区代码,例如 “RU”、“US”。
$geoip_city_country_code3 三个字母的国家/地区代码,例如 “RUS”、“USA”。
$geoip_city_country_name 国家名称,例如 “俄罗斯联邦”、“美国”。
$geoip_dma_code 根据 Google AdWords API 中的地理定位,美国的 DMA 区域代码(也称为“地铁代码”)。
$geoip_latitude 纬度
$geoip_longitude 经度
$geoip_region 双符号国家/地区代码(地区、领土、州、省、联邦土地等),例如 “48”、“DC”。
$geoip_region_name 国家/地区名称(地区、领土、州、省、联邦土地等),例如 “莫斯科市”、“哥伦比亚特区”。
$geoip_city 城市名称,例如 “莫斯科”、“华盛顿”。
$geoip_postal_code 邮政编码。
语 法:geoip_org file; 默认值:— 上下文:http
该指令出现在 1.0.3 版中。
指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时,以下变量可用:
$geoip_org 组织名称,例如 “墨尔本大学”。
语 法:geoip_proxy address | CIDR; 默认值:— 上下文:http
该指令出现在 1.3.0 和 1.2.1 版本中。
定义可信地址。当请求来自可信地址时,将使用 “X-Forwarded-For” 请求头字段中的地址。
语 法:geoip_proxy_recursive on | off; 默认值:geoip_proxy_recursive off; 上下文:http
该指令出现在 1.3.0 和 1.2.1 版本中。
如果递归搜索被禁用,则将使用 “X-Forwarded-For” 中发送的最后一个地址,而不是匹配受信任地址之一的原始客户端地址。如果启用了递归搜索,则将使用 “X-Forwarded-For” 中发送的最后一个非信任地址,而不是匹配受信任地址之一的原始客户端地址。