概览

由于一些异常的访问或频繁的搜索引擎的抓取导致服务器出现资源跑满,避免因此使服务器崩溃,我们需要针对这些流量进行屏蔽,目标 IP 访问时将以 HTTP 403 Forbidden 状态响应。

配置

IP 明细

/etc/nginx 目录创建一个 blockip.conf 的文件,将需要屏蔽的 IP 写入该文件,格式如下:

deny 61.133.125.194;
deny 61.133.125.198;
deny 61.150.69.77;
deny 61.160.200.31;
deny 61.160.200.66;
deny 61.186.10.124;
deny 61.242.190.11;
deny 61.243.184.75;
deny 61.243.46.29;
deny 61.54.25.100;

后续或有增加,直接修改 blockip.conf 文件即可。

Nginx 设置

/etc/nginx 目录备份 nginx.conf 后并编辑该文件;

http {
    ...
    include blockip.conf;
    ...
    }

在需要生效范围的语句块内引入 IP 明细文件 include blockip.conf; 并重启 Nginx 服务;

需要注意,当前配置是 nginx.conf 和 blockip.conf 同在 /etc/nginx 目录,如果不在同个目录下, blockip.conf 需要写入完整路径位置;

完成以上配置后,以上 IP 列表的客户端将无法访问将在服务器经由 Nginx 处理的 Web 服务,如果需要测试是否有效,可将已知 IP 添加后再测试访问的页面反馈。

扩展描述

设置生效范围

语句块

效果

http{}

对 nginx 的所有服务生效,所有代理网站都会受到影响

server{}

指定的 server 服务,只对配置的代理网站起作用

location{}

指定的访问地址

limit_except{}

指定的 http 方法谓词

将 include blockip.conf; 写入各位语句块的不同生效范围;

单项 IP 设置

deny 10.11.12.13;

表示禁止该 IP 访问;

allow 10.11.12.14;

表示允许该 IP 访问;

默认情况下都是允许所有 IP 访问,该方法只用于禁止所有 IP 访问的情况下,再允许部分指定的 IP 访问;

deny all;

禁止所有 IP 访问;

allow all;

允许所有 IP 访问;

# 允许部分 IP 访问
allow 1.2.3.10;
allow 1.2.3.12;
allow 1.2.3.15;
# 禁止部分 IP 访问
deny all;

允许部分禁止所有;

规范为先写允许部分,再写禁止部分,生效顺序由上而下;

IP 段设置

屏蔽一定范围内 IP 地址,使用 IP 地址加子网掩码的组合。例如:

deny 10.0.0.0/8;

屏蔽 10.0.0.1~10.255.255.254 这个范围的 ip 地址;

deny 1.2.0.0/16;

屏蔽 1.2.0.1~1.2.255.254 这个范围的 IP 地址;

deny 1.2.3.0/24;

屏蔽 1.2.3.1~1.2.3.254 这个范围的 IP 地址;