nginx配置geoip限制访问

post by rocdk890 / 2017-9-28 16:08 Thursday linux技术
本文这个方法不是很建议使用,因为限制方式有点死板,不能很灵活的使用,也有可能是我的配置不灵活的原因,好了,来看教程吧.
系统:centos 7.x
1.检查nginx是否有编译GeoIP模块
nginx -V
nginx version: qixin/1.12.1
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=nginx --group=nginx --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --with-ld-opt=-ljemalloc --lock-path=/var/lock/subsys/nginx --with-http_secure_link_module --with-http_random_index_module --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module --with-http_geoip_module --with-mail --with-mail_ssl_module --with-cc-opt=-O3 --with-cpu-opt=pentium

可以看到有--with-http_geoip_module模块.

2.更新GeoIP数据库
yum -y install geoip-devel
cd /usr/share/GeoIP/
mv GeoIP.dat GeoIP.dat.old--
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz

3.nginx配置
vi /etc/nginx/nginx.conf
将下面的内容添加进 http {} 区域,并且要放在任何include语句之前:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default no;
CN yes;
TW yes;
HK yes;
MO yes;
}

ps:
本例中我只允许了国内,台湾,香港,澳门这些来访问.

然后在server {} 区域里添加以下内容:
if ($allowed_country = no) {
return 403;
}

也可以针对某个特定url进行限制:
location /admin {
if ($allowd_country = no) {
return 403;
}
}

最后重启nginx就可以了:
systemctl reload nginx

好了,这样就限制住了,但有个问题就是同时也屏蔽了google蜘蛛抓取,因为本例中是只有国内业务,无所谓google蜘蛛的抓取,所以我就没有去改配置了.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-709.html

标签: nginx centos 配置 限制 访问 geoip

评论: