VeryNginx 基于 lua_nginx_module(openrestry)
开发,实现了高级的防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。
VeryNginx 基于 OpenResty[^openresty],所以安装 VeryNginx 需要先安装好 OpenResty。但是VeryNginx 也支持安装在nginx中,但是需要lua-nginx-module,http_stub_status_module,http_ssl_module这3个模块的支持。碰巧的是,宝塔面板已经默认编译了这3个模块,所以我们只需要安装VeryNginx单个软件即可。
这篇文章就来谈谈如何在宝塔面板nginx环境中安装VeryNginx 防火墙,并且说说简单的防cc的设置。也算是对宝塔面板防cc的一个补充。
一:测试环境
宝塔面板7.0.3、nginx1.17.5、统:CentOS Linux 7.7.1908 (Core)
二:安装VeryNginx
github:https://github.com/alexazhou/VeryNginx
中文文档:https://github.com/alexazhou/VeryNginx/blob/master/readme_zh.md
克隆 VeryNginx 仓库到本地, 然后进入仓库目录,具体命令如下:
git clone https://github.com/alexazhou/VeryNginx.git cd VeryNginx python install.py install verynginx
安装完成的示例:
[root@daniao VeryNginx]# python install.py install verynginx ### copy VeryNginx files ... mkdir -p /opt/verynginx cp -r -f ./verynginx /opt/verynginx openresty not fount, so not copy nginx.conf chmod -R 755 /opt/verynginx/verynginx/configs *** All work finished successfully, enjoy it~
这里提示我们已经完成了VeryNginx的安装。
三:配置VeryNginx
根据官网的设置要求,我们需要设置 Nginx 配置文件,添加三条 Include 指令来实现功能,分别为:
include /opt/verynginx/verynginx/nginx_conf/in_external.conf; #http 配置块外部 include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf; #http 配置块内部 include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf; #server 配置块内部
以上三条指令分别放在nginx配置文件的 http 配置块外部,http 配置块内部,server 配置块内部,在修改时请保留这三条。如果添加了新的 Server 配置块或 http 配置块,也需要在新的块内部加入对应的 include 行。
3.1设置Nginx配置文件
宝塔面板→ Nginx →设置 → 配置修改,将以下2条代码放到正确的位置。
3.3重启Nginx
宝塔面板→nginx→服务→重载/重启Nginx:
至此就算正确安装了VeryNginx。
四:配置VeryNginx
VeryNginx 启动后,可以通过浏览器访问管理面板来查看状态以及进行配置。
管理面板地址为 http://网站域名/verynginx/index.html
。
默认用户名和密码是 verynginx
/ verynginx
。
登陆界面如下:
尝试添加自定义动作,浏览器校验,设置个cookie验证上去。保存之后,去刷新你的网址,看看是否多了一个叫verynginx_sign_cookie的cookie值。如何设置看图:
我们现在刷新自己的网站看看是否多了verynginx_sign_cookie的cookie值,如图:
确实是看到了这个cookie,这样VeryNginx就算正常运行了。
4.2设置防cc
VeryNginx如何设置防cc的规则呢。在自定义动作→拦截频率中可以设置。如图:
4.3测试效果
我们保存之后,可以打开自己的网站测试下效果,如图:
防cc已经起作用了。我们是封禁了300秒,之后,会自动解封。
4.4注意事项
- 通过 VeryNginx 控制面板保存新配置之后,会立刻生效,并不需要 restart/reload Nginx。
- VeryNginx 把配置保存在
/opt/verynginx/verynginx/configs/config.json
里面。 - 状态页面图表默认带有动画效果,如果有卡顿,可以点右上角齿轮图标关掉动画效果
- 如果因为配错了什么选项,导致无法登录,可以手动删除
config.json
来清空配置,或者手动编辑这个文件来修复。
4.5修改用户名密码
配置→系统→用户,这里面可以修改看图:
修改之后保存。
4.6更新 VeryNginx
你只需要先 pull github 上最新的代码到本地,然后通过以下命令来进行更新:
#更新 Verynginx python install.py update verynginx #更新 OpenResty python install.py update openresty
4.7一些错误解决
修改配置后,页面底部会出现一个浮动条,提示保存,在点击浮动条上的保存按钮之后,配置才会进行写入。如果遇到无法保存配置的问题,可能是文件目录权限的问题,设置成755 www就可以了,如图:
或者是nginx 设置的 client body 太小,导致请求体被缓存到文件,导致 lua 代码没有获取到请求体,保存时会提示请求失败
在 nginx.conf 中 http 部分增加一句,client_body_buffer_size 128k;
4.8总结
以上的方法只适合宝塔面板的安装,如果你多次折腾不成功,还是用宝塔面板的免费防火墙吧,或者是宝塔面板的收费防火墙。
VeryNginx可以设置浏览器验证功能,可以选择cookie或者JavaScript验证,可以有效避免被采集。其他设置请自行研究。