nginx使用geoip做區域限制

nginx使用geoip做區域限制

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
喜歡就支持一下吧
點贊5 分享