GeoIP模块(GeoIP)


回目录

·摘要

这个模块基于客户端的IP地址创建一些ngx_http_geoip_module变量,并与MaxMindGeoIP文件进行匹配,该模块仅用于0.7.63和0.8.6版本之后。

使用前提

这个模块需要geo数据库和读取数据库的库文件。
#Get the free database of geo_city
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
#Get the free database of geo_coundty
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
#Get the libgeoip. In debian you can do like this:
sudo apt-get install libgeoip-dev
#In other systems, you can download the source and compile it youself.
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
CentOS中可以使用yum:
yum install geoip-devel
编译:
./configure --with-http_geoip_module
示例配置:
http {
    geoip_country  GeoIP.dat;
    geoip_city     GeoLiteCity.dat;
    ...

·指令

geoip_country

语法:geoip_country path/to/db.dat;
默认值:none
使用字段:http
这个指令决定参观者IP所在国家需要使用的.dat文件,设置后该模块会创建以下变量:

·$geoip_country_code; - 两个字母的国家代码,如:"RU", "US"。
·$geoip_country_code3; - 三个字母的国家代码,如:"RUS", "USA"。
·$geoip_country_name; - 国家的完整名称,如:"Russian Federation", "United States"。
如果只需要国家名,则可以使用geoip_country数据库(1.1M),因为geoip_city数据库大小为43M,并且它们在进行查找时是完全缓存到内存中的。

geoip_city

语法:geoip_city path/to/db.dat;
默认值:none
使用字段:http
这个指令决定参观者IP所在国家、地区和城市需要使用的.dat文件,设置后该模块会创建以下变量:

·$geoip_country_code - 两个字母的国家代码,如:"RU", "US"。
·$geoip_country_code3 - 三个字母的国家代码,如:"RUS", "USA"。
·$geoip_country_name - 国家的完整名称,如:"Russian Federation", "United States"(如果可用)。
·$geoip_region - 地区的名称(类似于省,地区,州,行政区,联邦土地等),如:"Moscow City", "DC"(如果可用)。
·$geoip_city - 城市名称,如"Moscow", "Washington"(如果可用)。
·$geoip_postal_code - 邮政编码(如果可用)。
·$geoip_city_continent_code(如果可用)。
·$geoip_latitude - 所在维度(如果可用)。
·$geoip_longitude - 所在经度(如果可用)。

·参考文档

Original Documentation
Nginx Http GeoIP Module

前进->Real IP模块(Real IP)