如果我们的网站有一定的流量之后,很可能会遭受到一些恶意的攻击和访问,从而导致服务瘫痪或者云服务器遭殃。所以我们要通过nginx来禁止某些ip的访问和攻击。本文介绍了如何使用Nginx屏蔽IP来防止意外发生,当然也可以通过iptable来实现。

找出隐藏的可疑IP

nginx/logs/access.log是一个nginx服务器日志记录文件,从这里我们可以取得访问的IP,以及请求访问的页面或者资源等等很多内容。里面的语句格式如下所示:

127.0.0.1 - - [03/Feb/2021:20:02:01 +0800] “GET /favicon.ico HTTP/1.1” 500 579 “http://localhost/" “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36”
……
……

我们从中找出可疑的,需要禁止访问的ip地址。

在nginx的安装目录下,创建一个新的屏蔽IP文件

在nginx的安装目录下,创建一个新的屏蔽IP文件,并在其命名为blockip.conf之后添加一个新的禁止IP。只需编辑该文件。添加以下内容:

deny xxx.xxx.xxx.xxx;

将以下配置添加到nginx配置文件nginx.conf中

通过下面语句:

include blockip.conf;

该语句将这个文件引入nginx.confi中。blockip文件可以放在http、服务器、位置、Limit_EXT等语句块中,您需要注意相对路径,在本例中因为是nginx.conf,blockip.conf位于同一个目录中,所以include中的相对路径就是当前目录。

放在不同的语句块中,禁止ip影响的范围大小是不同的。

重新启动nginx的服务

重新启动nginx的服务 :nginx -s reload将生效。

高级用法:

禁止IP的配置文件可以屏蔽单个IP或IP段,也可以只屏蔽IP或IP段。

#屏蔽一个IP访问

deny IP;

#允许单一IP访问

allow IP;

#屏蔽所有IP访问

deny all;

#允许所有IP访问

allow all;

#阻止从123.0.0.1到123.255.255.254访问整个段的命令

deny 123.0.0.0/8;

#屏蔽IP段从123.45.0.1到123.45.255.254访问的命令

deny 124.45.0.0/16;

#屏蔽从123.45.6.1到123.45.6.254访问的命令的IP段

deny 123.45.6.0/24;