天天看點

Nginx之14鬥轉星移 - (GeoIP)

什麼是GeoIP

GeoIP為通過通路IP進而定位到經緯度、國家地圖、或者省(州)等位置資訊。我們可以通過此功能進行對某一個國家、或者某一個地域進行限制通路,或者是實作自定義個性化的功能。

Nginx之14鬥轉星移 - (GeoIP)

如何啟用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。

Nginx之14鬥轉星移 - (GeoIP)

中國華南ECS通路情況,GeoIP子產品成功擷取到國家資訊為CN,城市資訊為Shenzhen。

Nginx之14鬥轉星移 - (GeoIP)