nginx中如何使用geoip做區(qū)域限制

環(huán)境:

nginx version: nginx/1.14.0

centos version: centos7

需求如下:

通過ip區(qū)別國內(nèi)或國外,從而跳轉(zhuǎn)到不同的頁面,最終用nginx的第三方module:geoip來實(shí)現(xiàn),這就不說它的優(yōu)勢(shì)了,網(wǎng)上很多解釋,下面看怎么配置

我的系統(tǒng)中是配置了nignx.repo的,我直接用yum來安裝了geoip模塊,沒有用添加模塊重編的方式

yum?install?nginx-module-geoip

下載geoip的數(shù)據(jù)庫文件

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

根據(jù)需求配置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; }

配置虛擬主機(jī)如下:

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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享