Nginx之14斗转星移 - (GeoIP),


什么是GeoIP

GeoIP为通过访问IP从而定位到经纬度、国家地图、或者省(州)等位置信息。我们可以通过此功能进行对某一个国家、或者某一个地域进行限制访问,或者是实现自定义个性化的功能。
clipboard

如何启用GeoIP

# libmaxminddb (因为需要读取在GeoIP2的IP数据库库,需要使用到libmaxminddb中的一个C库)
wget https://github.com/maxmind/libmaxminddb/releases/download/1.3.2/libmaxminddb-1.3.2.tar.gz
tar zxvf libmaxminddb-1.3.2.tar.gz
cd libmaxminddb-1.3.2
./configure
make
make  install
# 添加库路径并更新库
sh -c "echo /usr/local/lib  >> /etc/ld.so.conf.d/local.conf"
ldconfig
# GeoIP
wget https://github.com/leev/ngx_http_geoip2_module/archive/3.2.tar.gz
tar zxvf 3.2.tar.gz
# Nginx
 ./configure --prefix=/usr/local/nginx --add-module=../ngx_http_geoip2_module-3.2
make & make install
# GeoLite城市库及国家库(这个库是为了将IP地址翻译成具体的地址信息)
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.mmdb.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.mmdb.gz
gunzip GeoLite2-City.mmdb.gz
gunzip GeoLite2-Country.mmdb.gz
mkdir /data/geoip
mv GeoLite2-City.mmdb  /data/geoip/city.mmdb
mv GeoLite2-Country.mmdb /data/geoip/country.mmdb
# 修改配置文件启用GeoIP
vim /usr/local/nginx/conf/nginx.conf
http {
    geoip2 /data/geoip/country.mmdb {
        $geoip2_data_country_code default=CN country iso_code;
        $geoip2_data_country_name country names en;
    }
    geoip2 /data/geoip/city.mmdb {
        $geoip2_data_city_name default=Shenzhen city names en;
    }

    server {
        listen       80;
        server_name  localhost;
        location / {
            add_header geoip2_data_country_code $geoip2_data_country_code;
            add_header geoip2_data_city_name $geoip2_data_city_name;
            if ($geoip2_data_country_code = CN){
                root /data/webroot/cn;
            }
            if ($geoip2_data_country_code = US){
                root /data/webroot/us;
            }
        }
}

如何检查GeoIP效果

mkdir /data/webroot/us
mkdir /data/webroot/cn
echo "US Site" > /data/webroot/us/index.html
echo "CN Site" > /data/webroot/cn/index.html

美国硅谷ECS访问情况,GeoIP模块成功获取到国家信息为US,城市信息为San Mateo。
clipboard1
中国华南ECS访问情况,GeoIP模块成功获取到国家信息为CN,城市信息为Shenzhen。
clipboard2

相关内容