GeoIP過濾器根據來自Maxmind GeoLite2數據庫的數據添加有關IP地址的地理位置的信息。
通過IP區別國內或國外,從而跳轉到不同的頁面,最終用nginx的第三方module:geoip來實現,這就不說它的優勢了,網上很多解釋,下面看怎么配置? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?( 推薦學習:nginx使用?)
我的系統中是配置了nignx.repo的,我直接用yum來安裝了geoip模塊,沒有用添加模塊重編的方式
yum?install?nginx-module-geoip
下載geoip的數據庫文件
cd?/etc/nginx mkdir?geoipdat cd?geoipdat 下載 wget?http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz wget?http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 解壓 gunzip?GeoIP.dat.gz gunzip?GeoLiteCity.dat.gz
根據需求配置nginx
首先在nginx.conf中加載geoip的庫,配置如下:
load_module?"modules/ngx_http_geoip_module.so"; load_module?"modules/ngx_stream_geoip_module.so"; user??nginx; worker_processes??1; error_log??/var/log/nginx/error.log?warn; pid????????/var/run/nginx.pid; events?{ ????worker_connections??1024; } http?{ ????include???????/etc/nginx/mime.types; ????default_type??application/octet-stream; ????log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?' ??????????????????????'$status?$body_bytes_sent?"$http_referer"?' ??????????????????????'"$http_user_agent"?"$http_x_forwarded_for"'; ????access_log??/var/log/nginx/access.log??main; ????sendfile????????on; ????#tcp_nopush?????on; ????keepalive_timeout??65; ????#gzip??on; ????include?/etc/nginx/conf.d/*.conf; }
配置虛擬主機如下:
geoip_country?/etc/nginx/geoipdat/GeoIP.dat; geoip_city?/etc/nginx/geoipdat/GeoLiteCity.dat; server?{ ????listen???????80; ????server_name??localhost; ????location?/?{ root?/opt; if?($geoip_country_code?=?CN){ rewrite?(.*)?/zh$1?break; } ????????rewrite?(.*)?/en$1?break; ????} ????????error_page???500?502?503?504??/50x.html; ????location?=?/50x.html?{ ????????root???/usr/share/nginx/html; ????} }
opt目錄如下
[root@VM_0_15_centos?opt]#?tree . | └──?en │???????└──?index.html └──?zh ????└──?index.html
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END