Nginx屏蔽某个国家地区或IP段的简单实用方法

本文以Nginx为例,宝塔面板(BT.CN和aaPanel)自带的免费防火墙屏蔽指定的国家IP段基本无效,只好自己动手找解决方法。

1、下载IP数据库


打开下方链接:

https://www.ip2location.com/free/visitor-blocker
中国大陆地区访问会一直提示
Verifying your request, please wait...

⚆_⚆ 所以你必须要用魔法。

在该页面中间的Download List,选择要屏蔽阻止的国家/地区、IP 地址版本(IPv4 或 IPv6)、输出格式,然后按“DOWNLOAD”按钮下载。如果看不懂,下面的操作就没必要了。

下载后解压firewall.txt.gz,解压后用记事本打开firewall.txt:

# -------------------------------------------------------
# Free IP2Location Firewall List by Country
# Source: https://www.ip2location.com/free/visitor-blocker
# Last Generated: 07 May 2023 17:45:10 GMT
# [Important] Please update this list every month
# -------------------------------------------------------
location / {
	deny 1.0.16.0/20;
        …
}

删除

# -------------------------------------------------------
# Free IP2Location Firewall List by Country
# Source: https://www.ip2location.com/free/visitor-blocker
# Last Generated: 07 May 2023 17:45:10 GMT
# [Important] Please update this list every month
# -------------------------------------------------------
location / {
注意:
最后一行的}也要删除,只保留deny IP部分
文件另存为:
blocksip.conf

2、上传blocksip.conf


我使用的是宝塔面板,所以直接登录面板,面板左侧:文件,将blocksip.conf上传到/www/server/nginx/conf目录下。

3、Nginx设置


在控制面板左侧导航:网站,打开你要屏蔽访问的站点 - 设置,在配置文件中添加:

include blocksip.conf;

重启Nginx服务,结束。

4、其他


需要添加新的屏蔽IP则编辑blocksip.conf文件;
blocksip.conf文件格式还有许多种,可以配置只允许的IP或者IP段访问

deny IP; 拒绝 IP
allow IP; 允许 IP