在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做区域限制的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。