爱意满满的作品展示区。
AlexaZhou

对人类友好并且强大的 VeryNginx

  AlexaZhou ·
alexazhou · Feb 3, 2016 · 29446 views
This topic created in 3786 days ago, the information mentioned may be changed or developed.

之前工作中经常在 Nginx 里面配置各种规则,感觉 Nginx 功能强大但并不是很易用。

于是就觉得可以写一个强大而且对人类友好的 Nginx

前前后后写了一个多月,总算是在过年之前完成了

逻辑通过 lua 实现,嵌入到 Nginx 中,自带前端界面

传送门: https://github.com/alexazhou/VeryNginx

VeryNginx = Very powerful and friendly nginx

功能上主要是实现了高级的防火墙,访问统计,和其他的一些功能,也就是对 Nginx 本身功能的一些强化。

并且:提供了更友好的 web 交互界面(这是重点)

在 web 界面里面修改配置后,保存后即刻生效,并不需要重启 Nginx 或者 reload 。

主要功能如下:

Nginx 运行状态分析

  • 每秒请求数
  • 响应时间
  • 网络流量
  • 网络连接数

请求过滤

VeryNginx 可以基于按照以下信息对请求进行过滤:

  • IP
  • UserAgent
  • 请求路径(URI)
  • 请求参数

通过配置过滤规则,可以阻止 SQL 注入, Git , SVN 文件泄露,拦截扫描工具等

访问统计

VeryNginx 可以统计网站每个 URI 的访问情况,包括每个 URI 的:

  • 总请求次数
  • 各状态码次数
  • 返回总字节数
  • 每请求平均字节数
  • 总响应时间
  • 平均响应时间

附一张 VeryNginx 的界面图

Nginx 运行状态

欢迎大家试用~

120 replies    2019-01-04 17:29:40 +08:00
1  2  
lightening
    101
lightening  
   Feb 10, 2016   ❤️ 1
这么好的东西,要是能做成 Docker image 方便部署就好了~
think2011
    102
think2011  
   Feb 10, 2016   ❤️ 1
你搞的这个东西, exciting !
AlexaZhou
    103
AlexaZhou  
OP
   Feb 10, 2016
@xuhaoyangx 对的,让 VeryNginx 目录对 nginx 进程可写就行了,因为会保存配置在里面
AlexaZhou
    104
AlexaZhou  
OP
   Feb 10, 2016
@Yamade 你是说 IP 黑名单吗,在 IP 过滤里面配置就可以了
sparkssssssss
    105
sparkssssssss  
   Feb 11, 2016 via iPhone   ❤️ 1
mark 感谢分享
kmahyyg
    106
kmahyyg  
   Feb 14, 2016   ❤️ 1
starred 楼主可以考虑内置并通过 gui 启用一些常用的 modules ,新版的 nginx 已经可以动态加载.so
micookie
    107
micookie  
   Feb 16, 2016   ❤️ 1
已收藏
aitaii
    108
aitaii  
   Feb 19, 2016 via Android   ❤️ 1
收藏了
AlexaZhou
    109
AlexaZhou  
OP
   Feb 22, 2016
通知一下,经过这段时间的开发, VeryNginx 有了一个大更新,也修正了不少 bug

现已经合并到 master 了,作为 v0.2-beta 版本发布了

主要变更见:
https://www.v2ex.com/t/257521#reply11

呃,那个,最早的版本确实有不少奇怪的 bug ,大家抽空及时更新吧
@wph95 @rrfeng @kenneth @withrock
yov123456
    110
yov123456  
   Mar 13, 2016
请问设置 Browser Verify 的时候可以定义白名单吗?
yov123456
    111
yov123456  
   Mar 13, 2016
@yov123456 好吧我看错了……可以自定义 macther ……
tyhunter
    112
tyhunter  
   Mar 15, 2016
LZ 你好,我按照你的教程安装 verynginx ,在“./configure --prefix=/opt/VeryNginx --user=nginx --group=nginx --with-http_stub_status_module --with-luajit ”这一步中提示
make[1]: Leaving directory `/root/ngx_openresty-1.9.7.1/build/LuaJIT-2.1-20151219/src'
==== Successfully built LuaJIT 2.1.0-beta1 ====
make install TARGET_STRIP=@: CCDEBUG=-g CC=cc PREFIX=/opt/VeryNginx/luajit DESTDIR=/root/ngx_openresty-1.9.7.1/build/luajit-root/
==== Installing LuaJIT 2.1.0-beta1 to /opt/VeryNginx/luajit ====
mkdir -p /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/bin /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/include/luajit-2.1 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/share/man/man1 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/pkgconfig /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/share/luajit-2.1.0-beta1/jit /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/share/lua/5.1 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/lua/5.1
cd src && install -m 0755 luajit /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/bin/luajit-2.1.0-beta1
cd src && test -f libluajit.a && install -m 0644 libluajit.a /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.a || :
rm -f /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so.2.1.0 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so
cd src && test -f libluajit.so && \
install -m 0755 libluajit.so /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so.2.1.0 && \
ldconfig -n /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib && \
ln -sf libluajit-5.1.so.2.1.0 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so && \
ln -sf libluajit-5.1.so.2.1.0 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/libluajit-5.1.so || :
cd etc && install -m 0644 luajit.1 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/share/man/man1
cd etc && sed -e "s|^prefix=.*|prefix=/opt/VeryNginx/luajit|" -e "s|^multilib=.*|multilib=lib|" luajit.pc > luajit.pc.tmp && \
install -m 0644 luajit.pc.tmp /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/lib/pkgconfig/luajit.pc && \
rm -f luajit.pc.tmp
cd src && install -m 0644 lua.h lualib.h lauxlib.h luaconf.h lua.hpp luajit.h /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/include/luajit-2.1
cd src/jit && install -m 0644 bc.lua bcsave.lua dump.lua p.lua v.lua zone.lua dis_x86.lua dis_x64.lua dis_arm.lua dis_ppc.lua dis_mips.lua dis_mipsel.lua vmdef.lua /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/share/luajit-2.1.0-beta1/jit
ln -sf luajit-2.1.0-beta1 /root/ngx_openresty-1.9.7.1/build/luajit-root//opt/VeryNginx/luajit/bin/luajit
make: execvp: ln: Too many levels of symbolic links
make: *** [install] Error 127
ERROR: failed to run command: make install TARGET_STRIP=@: CCDEBUG=-g CC=cc PREFIX=/opt/VeryNginx/luajit DESTDIR=/root/ngx_openresty-1.9.7.1/build/luajit-root/
loveminds
    113
loveminds  
   Mar 17, 2016
你这模块绑定 127.0.0.1 ,感觉这个设计本身就是不合理
要么通过 nginx 二次转发,要么通过其他工具转发
HanSonJ
    114
HanSonJ  
   Apr 17, 2016
想问一下如何通过外部 IP 访问而不是 localhost 呢?
AlexaZhou
    115
AlexaZhou  
OP
   Apr 17, 2016
@HanSonJ

本来就是可以通过外部 IP 访问的,使用部署到机器的 ip 地址访问就可以
只是安装文档中是部署到本机,所以使用了 localhost
HanSonJ
    116
HanSonJ  
   Apr 17, 2016
@AlexaZhou 谢了,可能是我服务器防火墙问题
abc123ccc
    117
abc123ccc  
   Jul 27, 2016
你搞得完美的话,会有人来打你官方网站的,该做的你都做了,让人家 kangle 杂活呀。
jhytxy
    118
jhytxy  
   Sep 9, 2016
为什么 rc.local 里加入 /opt/verynginx/openresty/nginx/sbin/nginx 没有运行呢
手动运行是 ok 的
linkerlin
    119
linkerlin  
   Nov 4, 2016
不能保存配置。
添加新用户或者改密码后,保存。再登录发现用户没加好,或者密码没改。
不知道是哪里不对?
notolddriver
    120
notolddriver  
   Jan 4, 2019
项目很棒。 但现在企业大部分都是多个 nginx 做负载均衡,所以前端页面只能管理一个 nginx 有点不实用- -
1  2  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1540 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 54ms · UTC 16:44 · PVG 00:44 · LAX 09:44 · JFK 12:44
♥ Do have faith in what you're doing.