模块 ngx_http_geoip_module
| 示例配置 指令 geoip_country geoip_city geoip_org geoip_proxy geoip_proxy_recursive |
模块 ngx_http_geoip_module(0.8.6+)根据客户端 IP 地址创建具有值的变量,使用预编译的 MaxMind 数据库。
当使用支持 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 -
国家名称,例如,“
Russian Federation”,“United States”。
| 语法: | 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”中发送的最后一个非受信任地址,而不是与受信任地址之一匹配的原始客户端地址。
