1. 程式人生 > >nginx增加GeoIP模組

nginx增加GeoIP模組

Linux安裝GeoIP
附件地址:連結: https://pan.baidu.com/s/1dFl1zZN 密碼: x37s
./configure
make
make install

如果原已經安裝好的nginx,現在需要新增一個未被編譯安裝的模組

1.nginx -V 可以檢視原來編譯時都帶了哪些引數

原來的引數:
–prefix=/app/nginx

新增後的引數:
./configure –prefix=/app/nginx –with-http_geoip_module

2.編譯
make (千萬不要make install,否則就是覆蓋安裝了)

3.備份原有./nginx

4.把編譯完的nginx(在安裝目錄的objs資料夾下)二進位制檔案,複製到/usr/local/nginx/sbin/
cp -rf ./objs/nginx /app/nginx/sbin/

5../nginx -V 測試成功

在操作過程中遇到錯誤:
/usr/local/nginx/sbin/nginx:
error while loading shared libraries: libGeoIP.so.1: cannot open shared object file: No such file or directory

解決方案:
檢視一下類庫路徑
ldd /usr/local/nginx/sbin/nginx
結果:

這裡寫圖片描述

ln -s /usr/local/lib/libGeoIP.so* /lib64/

ldconfig
/usr/local/nginx/sbin/nginx -V 牛逼解決

附加個使用說明:

http {
...
    geoip_city    /var/GeoIP/GeoLiteCity.dat;#geoip的庫檔案
    #handler中可以接收header中的值(Geo-City的key 等)
    proxy_set_header    Geo-Country-Code $geoip_city_country_code;
    proxy_set_header    Geo-Region $geoip_region;
    proxy_set_header    Geo-City $geoip_city;
    proxy_set_header    Geo-Postal-Code $geoip_postal_code;
    proxy_set_header    Geo-Continent-Code $geoip_city_continent_code;
    proxy_set_header    Geo-Latitude $geoip_latitude;
    proxy_set_header    Geo-longitude $geoip_longitude;
...
server{ ... #下面程式碼可以放到 location模組下 add_header geoip_city $geoip_city; add_header geoip_city_country_code $geoip_city_country_code; add_header geoip_region $geoip_region; add_header geoip_postal_code $geoip_postal_code; add_header geoip_city_continent_code $geoip_city_continent_code; add_header geoip_latitude $geoip_latitude; add_header geoip_longitude $geoip_longitude; ... } } ·$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 - 所在經度(如果可用)。