NGINX 封禁 IP(IP 段)访问方法:修改配置文件或 .htaccess 文件

最近有个网站经常有人大量访问,看了一下是有人无聊写了个爬虫在爬,所以本文分享一下 NGINX 如何封禁某个 IP 或者 IP 段。当你的 NGINX 服务器想禁止某个 IP 或 IP 段访问时,可以通过配置文件来达到目的,本文介绍两种常用的方法。

方法一:修改 Nginx 配置文件 nginx.conf

Nginx 配置访问 IP 可以修改 nginx.conf 文件,只需要在 server 中添加 allowdeny 的 IP 即可,如下:

server {
    listen       80;
    server_name  localhost;
    allow all;
    deny 123.123.123.123;
    error_page   500 502 503 504  /50x.html;
}

注意!上面的配置中 allow 必须在 deny 的前面配置,不然 allow 不生效。

Nginx 中允许或者拒绝某个 IP 访问是这么写的:

allow 192.168.0.1;
deny  192.168.0.2;

如果你需要对整个 IP 段设置不允许访问,可以这么写:

deny 123.0.0.0/8;    // 封 123.0.0.1~123.255.255.254 这个段的ip
deny 123.123.0.0/16;   // 封 123.123.0.1~123.123.255.254 这个段的ip
deny 123.123.123.0/24;   // 封 123.123.123.1~123.123.123.254 这个段的ip

deny all;  // 封所有ip

说明,allowdeny 配置相同,如果需要开放某个 IP 段,只需要把上面的 deny 改成 allow

另外需要注意,该配置修改需要重启 Nginx 服务器才能生效。

方法二:修改网站配置文件 .htaccess

除了修改 Nginx 配置文件之外,还可以通过修改网站配置文件 .htaccess 来限制某 IP(段)访问,方法如下。

将以下内容保存为 .htaccess 文件,上传至网站根目录。如果原来已经存在 .htaccess 文件的,将以下内容加到该文件开头。

Order allow,deny
allow from all
deny from 123.123.123.123

如果要限制一个 IP 段,比如要限制 123.123.123.* 这个 C 段,则输入:

Order allow,deny
allow from all
deny from 123.123.123

以上内容表示拒绝 123.123.123 开头的所有 IP,其他 IP 允许。

如果要限制多个 IP 段,中间用空格隔开,如:

Order allow,deny
allow from all
deny from 111.111.111 111.222.222 111.333.333

说明,该配置不用重启 web 服务器,修改立即生效。

此外,该方法适用任何 web 网站,例如 IIS、Apache 网站。

参考文献:


【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps

【AD】RackNerd 推出的 KVM VPS 特价优惠,在纽约、西雅图、圣何塞和阿什本每年仅需 12.88 美元!