模块 ngx_http_geoip_module
示例配置 指令 geoip_country geoip_city geoip_org geoip_proxy geoip_proxy_recursive |
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 |
---|---|
默认值 | — |
上下文 |
http |
指定用于根据客户端 IP 地址确定国家/地区的数据库。使用此数据库时,可以使用以下变量:
$geoip_country_code
- 两位国家/地区代码,例如,“
RU
”,“US
”。 $geoip_country_code3
- 三位国家/地区代码,例如,“
RUS
”,“USA
”。 $geoip_country_name
- 国家/地区名称,例如,“
俄罗斯联邦
”,“美国
”。
语法 |
geoip_city |
---|---|
默认值 | — |
上下文 |
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
- 美国的 DMA 区域代码(也称为“都市代码”),根据 Google AdWords API 中的 地理定位。
$geoip_latitude
- 纬度。
$geoip_longitude
- 经度。
$geoip_region
- 国家/地区区域的两位代码(地区、领土、州、省、联邦土地等),例如,“
48
”,“DC
”。 $geoip_region_name
- 国家/地区区域名称(地区、领土、州、省、联邦土地等),例如,“
莫斯科市
”,“哥伦比亚特区
”。 $geoip_city
- 城市名称,例如,“
莫斯科
”,“华盛顿
”。 $geoip_postal_code
- 邮政编码。
语法 |
geoip_org |
---|---|
默认值 | — |
上下文 |
http |
此指令出现在 1.0.3 版本中。
指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时,可以使用以下变量:
$geoip_org
- 组织名称,例如,“墨尔本大学”。
语法 |
geoip_proxy |
---|---|
默认值 | — |
上下文 |
http |
此指令出现在 1.3.0 和 1.2.1 版本中。
定义可信地址。当请求来自可信地址时,将使用“X-Forwarded-For”请求头字段中的地址。
语法 |
geoip_proxy_recursive |
---|---|
默认值 |
geoip_proxy_recursive off; |
上下文 |
http |
此指令出现在 1.3.0 和 1.2.1 版本中。
如果禁用递归搜索,则将使用“X-Forwarded-For”中发送的最后一个地址,而不是匹配其中一个可信地址的原始客户端地址。如果启用递归搜索,则将使用“X-Forwarded-For”中发送的最后一个非可信地址,而不是匹配其中一个可信地址的原始客户端地址。