模块 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
国家/地区名称,例如,“俄罗斯联邦”、“美国”。

语法 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
国家/地区名称(地区、领土、州、省、联邦土地等),例如,“Moscow City”、“District of Columbia”。
$geoip_city
城市名称,例如,“Moscow”、“Washington”。
$geoip_postal_code
邮政编码。

语法 geoip_org file;
默认值
上下文 http

此指令出现在 1.0.3 版本中。

指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时,可使用以下变量

$geoip_org
组织名称,例如,“The University of Melbourne”。

语法 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”中发送的最后一个非受信任地址,而不是与受信任地址之一匹配的原始客户端地址。