在nginx中使用geoip做区域限制的方法
该博客为工作笔记
环境:
nginxversion:nginx/1.14.0
centosversion:centos7
需求如下:
通过IP区别国内或国外,从而跳转到不同的页面,最终用nginx的第三方module:geoip来实现,这就不说它的优势了,网上很多解释,下面看怎么配置
我的系统中是配置了nignx.repo的,我直接用yum来安装了geoip模块,没有用添加模块重编的方式
yuminstallnginx-module-geoip
下载geoip的数据库文件
cd/etc/nginx mkdirgeoipdat cdgeoipdat 下载 wgethttp://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz wgethttp://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 解压 gunzipGeoIP.dat.gz gunzipGeoLiteCity.dat.gz
根据需求配置nginx
首先在nginx.conf中加载geoip的库,配置如下:
load_module"modules/ngx_http_geoip_module.so"; load_module"modules/ngx_stream_geoip_module.so"; usernginx; worker_processes1; error_log/var/log/nginx/error.logwarn; pid/var/run/nginx.pid; events{ worker_connections1024; } http{ include/etc/nginx/mime.types; default_typeapplication/octet-stream; log_formatmain'$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.logmain; sendfileon; #tcp_nopushon; keepalive_timeout65; #gzipon; include/etc/nginx/conf.d/*.conf; }
配置虚拟主机如下:
geoip_country/etc/nginx/geoipdat/GeoIP.dat; geoip_city/etc/nginx/geoipdat/GeoLiteCity.dat; server{ listen80; server_namelocalhost; location/{ root/opt; if($geoip_country_code=CN){ rewrite(.*)/zh$1break; } rewrite(.*)/en$1break; } error_page500502503504/50x.html; location=/50x.html{ root/usr/share/nginx/html; } }
opt目录如下
[root@VM_0_15_centosopt]#tree . | └──en │└──index.html └──zh └──index.html
上面只是简单配置一下。。。。
以上这篇在nginx中使用geoip做区域限制的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。