Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在 BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中表现较好,也正如此,越来越多的站长在建站配置环境时,会选择 Nginx 做为其 Web 服务器来使用。但是,使用 Nginx 时,往往会遇到各种各样层出不穷的恶意访问,比如:恶意攻击、采集复制、甚至镜像网站和恶意扫描文件,这些行为让您在使用 Nginx 时防不胜防,建个网站就要有操不完的心。
今天,我们就来教童鞋们如何去根除这些问题,我们只需使用 deny 命令来编写 Nginx 的 IP 黑名单,来有效的屏蔽恶意访问者的 IP 地址。那么,如我们使用 deny 命令来编写 Nginx 的 IP 黑名单呢,请继续往下看。
在我们进行操作前,需要先了解下 Nginx 的“deny”和“allow”命令:deny 为“禁止”,allow 为“允许”,需要注意的是,在 Nginx 的配置文件中,allow 必须在 deny 的前面,否则 allow 就会失效,有些时候我们还可能会用到“all”命令,它代表“全部”的意思。
例如:当我们想要“禁止”或“允许”所有地址,就可以使用“allow all”或“deny all”,来进行设置;如果是想要单独放行或者阻止某个 IP 地址(段),则可以直接添加相应命令即可。以下演示代码以 192.168.1.1 及相关地址段为示例:
# 屏蔽命令详解
allow all; //放行所有
deny all; //屏蔽所有
allow 192.168.1.1; //放行单独 IP
deny 192.168.1.1; //屏蔽单独 IP
deny 192.0.0.0/8; //屏蔽 192.0.0.1 到 192.255.255.254 段
deny 192.168.0.0/16; //屏蔽 192.168.0.1 到 192.168.255.254 段
deny 192.168.1.0/24; //屏蔽 192.168.1.1 到 192.168.1.254 段
通常情况下,我们只需修改要配置的 nginx.conf 文件,一般情况下路径为“/usr/local/nginx/conf”下。如果需要屏蔽的 IP 地址(段)数量较小的情况下,可以参考上面的代码示例,直接在 nginx.conf 内的“server”中添加需要 deny 的 IP 地址列表即可;如果需要屏蔽的 IP 地址(段)数量大,则建议使用文件格式屏蔽,我们单独新建一个“ipblack.conf”黑名单文件,名字随意但要注意文件路径,示例如下:
# 默认配置文件路径
/usr/local/sbin/nginx
# 配置单独屏蔽和文件屏蔽
server {
listen 80;
listen [::]:80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
...
deny 192.168.1.1; //单独屏蔽
deny 192.168.2.1; //单独屏蔽
# 二选一
include ipblack.conf; //通过文件屏蔽,
...
}
如果你使用了第二种方法,即使用了单独的黑名单文件,只需将“deny”要屏蔽的地址一一放进去即可,一行一条,配置完成后,重新加载 Nginx 配置文件或者重启 Nginx 服务即可生效。在这里,我们更加推荐使用单独文件管理的方式,这样更加方便编辑管理,还不容易导致新手出错,希望对大家有所帮助。如果您有更好的方法和建议,欢迎在评论区留言告诉我们,我们期待和您的互动。