Nginx屏蔽国内外IP访问
2023-03-12
有时候我们的网站可能会需要屏蔽一些地区的IP,禁止他们访问。例如一些外贸网站需要屏蔽国内IP,国内的屏蔽外国IP。
这里介绍一种最简单快速的,不需要重新编译nginx。
首先介绍一下nginx提供的屏蔽IP的命令
# deny 用屏蔽、allow 允许
# 屏蔽单个IP
deny IP;
# 屏蔽所有IP
deny all;
# 允许单个IP访问
allow IP;
# 允许全部
allow all;
# IP可以时单个IP也可以是IP段
deny 123.0.0.0/8
第一步
知道了nginx怎么屏蔽IP,我们只需要拿到国内所有的ip地址段就可以了,我们剋从 https://www.ip2location.com/free/visitor-blocker 中获取
左边选择城市,右边选择类型,根据需要选择即可。
解压之后是一个txt 文件
放到配置文件中
删除location / {
和 }
( 可选 ,主要方便放到不同位置)
将后缀名改为.conf
上传到服务器上。
打开nginx 配置文件,不知道在哪可以输入 sudo nginx -t
看一下配置文件在哪。
然后将刚才文件 include
到nginx配置文件中即可
server
{
listen 80 ;
include /usr/local/nginx/conf/nginx.conf/firewall.conf;
......
注意 include 的位置,可以是 http, server, location, limit_except (如果文件里没有删除 location 就不能乱放了)
重新加载
保存,重新加载即可
sudo nginx -s reload