第一步:下載GeoIP庫,下面為百度雲網盤下載。
鏈接:https://pan.baidu.com/s/1oiNFzK1do9T9jyXavvSiLQ
提取碼:zjgm
下載后上傳到部署Nginx所在的服務器,上傳方式可以使用wscp等。我上傳的目錄為Centos7.6服務器的 /usr/local/share/GeoIP,上傳成功后,執行如下命令解壓
cd /usr/local/share/GeoIP tar -zxvf GeoIP-1.4.8.tar.gz
如圖所示:
第二步:進入剛才解壓的目錄,編譯,安裝GeoIP工具。
執行如下命令
cd /usr/local/share/GeoIP/GeoIP-1.4.8
./configure && make && make install
等待編譯,安裝完成,安裝完成后發現GeoIP文件夾下面自動多了一個GeoIP.dat文件,這與網上說的要另外去下載GeoIP數據庫不一樣,大家可以直接用它來測試看看能不能用。
這里需要說明下,上面的操作,將工具安裝到了/usr/local/lib目錄下,我們需要讓其生效。需要執行下面的操作
echo '/usr/local/lib' > /etc/ld.so.conf.d/geoip.conf
ldconfig
第三步:在Nginx中加入GeoIP模塊
首先進入Nginx文件夾sbin下查看是否已經安裝了GeoIP模塊
./nginx -V
輸出結果如下圖所示:
可以看到,configure arguments: --prefix=/usr/local/nginx 參數里面並沒有GeoIP信息,證明我們Nginx沒有安裝GeoIP模塊。
下面我們在編譯參數里面加入GeoIP模塊編譯Nginx
進入Nginx源碼包,我的源碼包位置在 /usr/local/share/nginx/nginx-1.16.1
執行下面的命令
./configure --prefix=/usr/local/nginx --with-http_geoip_module && make && make install
編譯完成后,定位到我們nginx文件sbin目錄下,執行如下命令:
./nginx -V
./nginx -s reload
如下圖所示,那么Nginx配置GeoIP模塊成功
第四步,在Nginx文件中加入下面配置
geoip_country /usr/local/share/GeoIP/GeoIP.dat;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_CODE3 $geoip_country_code3;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
如下圖所示,如果IP為國內IP那么定位到本地工程目錄,如果為國外IP啟動代理地址: