nginx拒绝国外IP访问方法很多,比如iptables,geoip模块,域名解析等等。这些方法不会相互冲突,可以结合起来一起使用。
今天来教大家利用两个小方法解决 域名解析禁止掉海外IP访问网站。
域名解析方法:
绝大多数域名解析服务商都是提供电信联通移动海外线路区分解析的,所以我们可以充分利用这个功能,来禁止海外访问。
以阿里云DNS解析为例:
设置A记录类型
解析线路:*
记录值:127.0.0.1
设置后等30分钟后我们再用ping工具测试下*解析,就会发现所有的海外线路都会解析至127.0.0.1这个IP上,为什么是127.0.0.1呢?因为这个是本地IP,如果有攻击海外肉鸡攻击这个网站,就会自己攻击自己。
结合我写的另外一个方法:
用脚本每周更新国外IP库,利用nginx deny功能直接拒绝这些IP地址。
#添加到crontab 0 0 * * 5 /bin/bash /root/tools/black_nginx.sh
代码内容
#!/bin/bash
rm -f legacy-apnic-latest black_`date +%F`.conf && wget http://ftp.apnic.net/apnic/stats/apnic/legacy-apnic-latest awk -F '|' '{if(NR>2)printf("%s %s/%d%s\n","deny",$4,24,";")}' legacy-apnic-latest > black_`date +%F`.conf && rm -f /usr/local/nginx/conf/black.conf && ln -s $PWD/black_`date +%F`.conf /usr/local/nginx/conf/black.conf && /etc/init.d/nginx reload