一个非常强大和友好的nginx基于lua-nginx-module(openresty),提供WAF,控制面板和仪表板
VeryNginx
VeryNginx是一个非常强大和友好的nginx。
中文文档
注意
在v0.2之后,控制面板的输入uri被移动到 /verynginx/index.html
描述
VeryNginx基于lua_nginx_module(openrestry)。它实现了高级防火墙(waf),访问统计和一些其他功能。它增强了Nginx的功能,并提供友好的Web界面。
VeryNginx在线演示
用户/密码:verynginx / verynginx
可以在以下位置找到完整版的配置指南:VeryNginx Wiki。
Nginx运行状态分析
- 每秒请求
- 响应时间
- 净流量
- Tcp connectinn num
自定义操作
VeryNginx支持自定义操作,可以执行很多操作。
自定义操作由两部分组成,Matcher和Action。Matcher用于测试请求是否符合规则,Action是您要运行的逻辑。
这种设计的优点是Matcher包含所有选择规则,并且可以重复使用,利用规则来描述可能非常复杂的逻辑。
匹配
A Matcher用于选择所有请求的一部分,a Matcher可以包含一个或多个条件。目前支持以下条件:
- 客户端IP
- 主办
- 用户代理
- URI
- 引荐
- 请求Args
当请求不与匹配器的任何条件冲突时,请求将由 Matcher
行动
每个Action引用一个Matcher,并将运行在由...选择的请求Matcher
现在,我们有了这些Action小号
- Scheme Lock将方案锁定为http / https
- 重定向重定向请求
- URI Rewrite对请求进行内部重写
- 浏览器验证使用set-cookies和javascript来验证客户端是否为浏览器,并阻止机器人的流量。此操作可能会阻止搜索引擎的蜘蛛,因此请仅在受到攻击时启用它。
- 频率限制在指定时间段内限制最长请求时间
- Filter Block有些请求,可以做WAF
Matcher可以通过多种条件选择请求,因此使用Filter Action,我们得到了一个强大的waf。waf可以过滤具有复杂规则的请求,并在阻止请求时返回特殊状态代码。
VeryNginx预设了一些简单的过滤规则,可以防止简单的SQL注入,Git和SVN文件泄露,目录遍历攻击和常见的扫描工具。
后端
每个Backend引用一个Matcher,并将处理由所选择的请求Matcher
现在我们有这些 Backend
- Proxy Pass代理将请求发送给其他服务器
- 静态文件使用本地文件来处理请求文件
请求统计
VeryNginx可以记录URI的请求,包括每个URI的这些数据:
- 所有请求计数
- 请求每个状态代码的计数
- 总字节数
- 平均字节数
- 总响应时间
- 平均响应时间
安装
安装Nginx / OpenResty
VeryNginx基于OpenResty,因此您需要先安装它。但是不要担心,VeryNginx提供了一个自动执行的脚本。
python install.py install
只需运行此命令,openresty和verynginx将自动安装。
想使用自定义nginx吗?
VeryNginx可以自动安装openresty,因此您无需手动安装nginx(openresty)。
但是如果你想使用你自己编译的nginx,那也没关系。你可以看到一些帮助
使用 - 拥有 - nginx的
用法
编辑nginx配置文件
VeryNginx的配置文件是
/opt/verynginx/openresty/nginx/conf/nginx.conf,这是一个演示。它可以让verynginx运行,以便您可以看到verynginx的仪表板。如果你想做一些非常有用的事情,你需要编辑该文件并在其中添加自己的nginx配置。
这个配置文件添加了三个include命令来将verynginx嵌入到原始的nginx中(openresty)
- 包括/opt/verynginx/verynginx/nginx_conf/in_external.conf;
- include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;
- include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;
这些include命令被放在一个块外,阻止http内部配置,服务器配置块里面,Remenber在修改时保留这三行。如果添加新的服务器配置块或http配置块,还需要在其中添加适当的include行。
启动/停止/重启服务
#Start Service
/opt/verynginx/openresty/nginx/sbin/nginx
#Stop Service
/opt/verynginx/openresty/nginx/sbin/nginx -s stop
#Restart Service
/opt/verynginx/openresty/nginx/sbin/nginx -s reload
在仪表板上配置VeryNginx
服务开始运行后,您可以查看服务器状态并在仪表板上执行配置。
仪表板的地址是http://{{your_machine_address}}/verynginx/index.html。
默认用户和密码是verynginx/ verynginx。您现在应该能够完成所有选项。
完整版的配置指南可以在VeryNginx Wiki中找到。
故障排除
如果在安装 / 配置 / 使用过程中遇到任何问题,可以参考故障排除文档。
故障排除
提示
- 新的配置将在保存后立即生效。没有必要重新启动或重新加载nginx。
- 保存配置时,VeryNginx会将所有配置写入/opt/verynginx/verynginx/configs/config.json。
- 如果状态页面中的聊天卡住,您可以单击右上角的齿轮图标以关闭动画
- 如果您通过做一些愚蠢的事情将自己锁定在VeryNginx之外,您可以随时删除config.json以将VeryNginx恢复为默认值。
更新VeryNginx / OpenResty
随着时间的推移,VeryNginx自己会发展,也可以支持更新版本的OpenResty。新版本的VeryNginx可能支持一些新功能或修复一些旧的错误。如果要更新本地安装的VeryNginx,只需将最新的代码从github提取到本地,然后运行以下命令:
#Update VeryNginx
python install.py update verynginx
#Update OpenResty
python install.py update openresty
install.py将在更新期间保留旧的config.json和nginx.conf。这样您在更新后就不会丢失配置。
构建VeryNginx docker Image
将代码克隆到本地文件系统后,可以运行以下命令:
docker build -t verynginx . docker run verynginx
然后,您可以导航到您的浏览器 http://{{
your_docker_machine_address}}/verynginx/index.html
您可以选择运行docker run -p xxxx:80 verynginx以将容器端口80映射到主机的xxxx端口