背景故事

最近经常有一些深圳南山的IP来爬站,咱也不知道是为毛,咱就一个个人博客而已,有啥好爬的呢。

经常爬的是CPU直接拉满,访问都访问不到了。

干脆搞一个脚本动态封禁算了。

 

安装ngx_lua_waf

这个算是比较常用的,也很好安装,之前没有写过笔记,干脆也罗列在这里算了。

修改Nginx配置文件,在http段内添加:

如果已指定lua_package_path,可用双引号括起来之后追加,形式如下:

修改ngx_lua_waf配置,日志目录需要Nginx的工作进程可以访问,所以要设置一下所有者。

配置内需要修改的地方不多,就把规则目录的地址和日志目录的地址改一下就好了。

可以访问如下地址来测试:

出现如下图所示就是安装成功。

该样式可以在ngx_lua_waf的配置文件config.lua中修改。

 

动态封禁脚本

前置需要

需要Nginx安装Lua模块,并安装好lua-resty-redis,被封禁IP是存储在Redis数据库内的。

为Nginx添加Lua模块以及安装lua-resty-redis,可以参考上一篇文章

根据需求来修改访问限制次数即可。

由于IP是存储在Redis数据库内的,也可以通过其他支持脚本的检测平台或者自己写一个Python/Lua脚本来分析访问日志,将特定IP写入数据库即可完成封禁。

可扩展空间还是挺大的。

实装

假设脚本文件存储为/usr/local/nginx/lua/ipblock.lua下,修改Nginx的配置文件,在http段中添加:

如果你有部署其他Lua脚本,那么就要自己想办法把动态封禁脚本整合进去,因为access_by_lua_file指令是不允许多个同时存在的。

补充

对于连User-Agent都懒得换的爬虫来说,直接修改Nginx的配置,将指定User-Agent的访问都403了就好了。

配置如下:

 

后记

经过一段时间的运行,虽然偶尔还是会有CPU占用100%的情况,但监测平台上看已经只是1分钟这种很短时间的了。

Nginx+Lua这种模式,对于配置不太高的VPS来说还是很好用,轻量化。

版权声明
转载保留版权: 大D技研室 | 《为Nginx安装ngx_lua_waf以及配置动态封禁IP脚本》
本文链接地址:https://www.dadclab.com/archives/7883.jiecao
转载须知:如果您需要转载本文,请将版权信息,版权授权方式,以及本文的链接地址注明,谢谢合作。
本文被贴上了: , , 标签