一个非常强大和友好的nginx基于lua-nginx-module(openresty)

Nginx/Web服务器
479
0
0
2022-03-27
标签   Openresty

一个非常强大和友好的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

一个非常强大和友好的nginx基于lua-nginx-module(openresty)

自定义操作

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文件泄露,目录遍历攻击和常见的扫描工具。

一个非常强大和友好的nginx基于lua-nginx-module(openresty)

一个非常强大和友好的nginx基于lua-nginx-module(openresty)

后端

每个Backend引用一个Matcher,并将处理由所选择的请求Matcher

现在我们有这些 Backend

  • Proxy Pass代理将请求发送给其他服务器
  • 静态文件使用本地文件来处理请求文件

请求统计

VeryNginx可以记录URI的请求,包括每个URI的这些数据:

  • 所有请求计数
  • 请求每个状态代码的计数
  • 总字节数
  • 平均字节数
  • 总响应时间
  • 平均响应时间

一个非常强大和友好的nginx基于lua-nginx-module(openresty)

安装

安装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端口