之前工作中经常在 Nginx 里面配置各种规则,感觉 Nginx 功能强大但并不是很易用。
于是就觉得可以写一个强大而且对人类友好的 Nginx
前前后后写了一个多月,总算是在过年之前完成了
逻辑通过 lua 实现,嵌入到 Nginx 中,自带前端界面
传送门: https://github.com/alexazhou/VeryNginx
功能上主要是实现了高级的防火墙,访问统计,和其他的一些功能,也就是对 Nginx 本身功能的一些强化。
并且:提供了更友好的 web 交互界面(这是重点)
在 web 界面里面修改配置后,保存后即刻生效,并不需要重启 Nginx 或者 reload 。
VeryNginx 可以基于按照以下信息对请求进行过滤:
通过配置过滤规则,可以阻止 SQL 注入, Git , SVN 文件泄露,拦截扫描工具等
VeryNginx 可以统计网站每个 URI 的访问情况,包括每个 URI 的:
附一张 VeryNginx 的界面图
欢迎大家试用~
101
lightening 2016-02-10 21:44:59 +08:00 1
这么好的东西,要是能做成 Docker image 方便部署就好了~
|
102
think2011 2016-02-10 21:51:36 +08:00 1
你搞的这个东西, exciting !
|
103
AlexaZhou OP @xuhaoyangx 对的,让 VeryNginx 目录对 nginx 进程可写就行了,因为会保存配置在里面
|
105
coolloves 2016-02-11 09:36:16 +08:00 via iPhone 1
mark 感谢分享
|
106
kmahyyg 2016-02-14 21:36:48 +08:00 1
starred 楼主可以考虑内置并通过 gui 启用一些常用的 modules ,新版的 nginx 已经可以动态加载.so 了
|
107
micookie 2016-02-16 09:45:54 +08:00 1
已收藏
|
108
aitaii 2016-02-19 20:54:25 +08:00 via Android 1
收藏了
|
109
AlexaZhou OP 通知一下,经过这段时间的开发, VeryNginx 有了一个大更新,也修正了不少 bug
现已经合并到 master 了,作为 v0.2-beta 版本发布了 主要变更见: https://www.v2ex.com/t/257521#reply11 呃,那个,最早的版本确实有不少奇怪的 bug ,大家抽空及时更新吧 @wph95 @rrfeng @kenneth @withrock |
110
yov123456 2016-03-13 13:38:04 +08:00
请问设置 Browser Verify 的时候可以定义白名单吗?
|
112
tyhunter 2016-03-15 22:15:05 +08:00
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/ |
113
loveminds 2016-03-17 21:54:59 +08:00
你这模块绑定 127.0.0.1 ,感觉这个设计本身就是不合理
要么通过 nginx 二次转发,要么通过其他工具转发 |
114
HanSonJ 2016-04-17 11:41:42 +08:00
想问一下如何通过外部 IP 访问而不是 localhost 呢?
|
115
AlexaZhou OP |
117
abc123ccc 2016-07-27 10:14:22 +08:00
你搞得完美的话,会有人来打你官方网站的,该做的你都做了,让人家 kangle 杂活呀。
|
118
jhytxy 2016-09-09 16:56:10 +08:00
为什么 rc.local 里加入 /opt/verynginx/openresty/nginx/sbin/nginx 没有运行呢
手动运行是 ok 的 |
119
linkerlin 2016-11-04 14:32:42 +08:00
不能保存配置。
添加新用户或者改密码后,保存。再登录发现用户没加好,或者密码没改。 不知道是哪里不对? |
120
notolddriver 2019-01-04 17:29:40 +08:00
项目很棒。 但现在企业大部分都是多个 nginx 做负载均衡,所以前端页面只能管理一个 nginx 有点不实用- -
|