GeoIP#

根据客户端 IP 地址创建变量并赋值,使用预编译的 MaxMind 数据库或其对应版本。

使用支持 IPv6 的数据库时,IPv4 地址将作为映射到 IPv6 的地址进行查找。

从源代码构建 时,默认不构建此模块;应通过 ‑‑with‑http_geoip_module 构建选项 进行启用。

重要

此模块需要 MaxMind GeoIP 数据库或类似的 MaxMind GeoLite2

配置示例#

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#

语法

geoip_country file;

默认

上下文

http

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

$geoip_country_code

两位的国家代码,例如 "RU","US"。

$geoip_country_code3

三位的国家代码,例如 "RUS","USA"。

$geoip_country_name

国家名称,例如 "Russian Federation","United States"。

geoip_city#

语法

geoip_city file;

默认

上下文

http

指定用于根据客户端 IP 地址确定国家、地区和城市的数据库。使用此数据库时,可用以下变量:

$geoip_city_continent_code

两位的大陆代码,例如 "EU","NA"。

$geoip_city_country_code

两位的国家代码,例如 "RU","US"。

$geoip_city_country_code3

三位的国家代码,例如 "RUS","USA"。

$geoip_city_country_name

国家名称,例如 "Russian Federation","United States"。

$geoip_dma_code

美国的 DMA 区域代码(也称为 "metro code"),根据 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#

语法

geoip_org file;

默认

上下文

http

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

$geoip_org

组织名称,例如 "The University of Melbourne"。

geoip_proxy#

语法

geoip_proxy file;

默认

上下文

http

定义可信任地址。当请求来自可信任地址时,将使用 "X-Forwarded-For" 请求头字段中的地址。

geoip_proxy_recursive#

语法

geoip_proxy_recursive on | off;

默认

geoip_proxy_recursive off;

上下文

http

如果禁用递归搜索,则将使用 "X-Forwarded-For" 中发送的最后一个地址,而不是与可信任地址匹配的原始客户端地址。如果启用递归搜索,则将使用 "X-Forwarded-For" 中发送的最后一个非可信任地址,而不是与可信任地址匹配的原始客户端地址。