开始试用VeryNginx

VeryNginx 是一个功能强大而对人类友好的 Nginx 扩展程序。[
VeryNginx is a very powerful and friendly nginx .]
基于lua-nginx-module(openresty)的非常强大且友好的nginx,可提供WAF,控制面板和仪表板。[
A very powerful and friendly nginx base on lua-nginx-module( openresty ) which provide WAF, Control Panel, and Dashboards.]

说来惭愧,直到昨天我才无意中在大佬的博客Jerry Qu中发现了VeryNginx看了下时间那已经是Dec 10, 2016的文章了,或许在这之前我亦有拜读过但重点却不在这篇文章。虽然已经将近3年但我还是决定试用VeryNginx,试用不是对VeryNginx的不信任而是对自己技术的不放心和贪图方便需要图形化界面添加管理网站。

由于现在手上机子匮乏也没钱购入新机器,只好使用上篇水文中提到的128MB的VPS,配置过低Centos7更新、安装等操作都会被killed只好将系统换成Debian8了。

同时在Centos8上面测试安装VeryNginx。

虽然本次安装是按照VeryNginx的Github教程走的,但是由于系统环境有些软件没有需要自己安装就特意又水一篇当作笔记。

话不多说安装先将遇到的错误写出来再水安装方法。
缺少相关编译环境:

### release the package ...
tar -xzf openresty-1.15.8.1.tar.gz
### configure openresty ...
./configure --prefix=/opt/verynginx/openresty --user=nginx --group=nginx --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-luajit
platform: linux (linux)
No gmake nor make found in PATH.
*** The installing stopped because something was wrong

需要:

sudo aptitude install build-essential

nginx缺少PCRE库

You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.

ERROR: failed to run command: sh ./configure --prefix=/opt/verynginx/openresty/nginx \...
*** The installing stopped because something was wrong

需要:

sudo apt-get update 
sudo apt-get install libpcre3 libpcre3-dev 
你可能还需要安装
sudo apt-get install openssl libssl-dev

进入正题安装VeryNginx:


git clone  https://github.com/alexazhou/VeryNginx.git

cd VeryNginx

python install.py install

等到提示

*** All work finished successfully, enjoy it~

nginx: [emerg] getpwnam("nginx") failed in

安装成功可以享用VeryNginx了,此时启动程序却提示我nginx: [emerg] getpwnam("nginx") failed in于是只好


useradd -s /sbin/nologin -M nginx

id nginx

现在就可以启动VeryNginx了。

启动/停止/重启 服务
完成安装工作以后,可以通过以下命令来运行 VeryNginx


#启动服务
/opt/verynginx/openresty/nginx/sbin/nginx

#停止服务
/opt/verynginx/openresty/nginx/sbin/nginx -s stop

#重启服务
/opt/verynginx/openresty/nginx/sbin/nginx -s reload

通过web面板对 VeryNginx 进行配置
管理面板地址为 http://{{your_machine_address}}/verynginx/index.html
默认用户名和密码是verynginx / verynginx

更新 VeryNginx / OpenResty

#更新 Verynginx
python install.py update verynginx

#更新 OpenResty
python install.py update openresty

更多食用方法请参考Github。

目前我用其来当自建CDN节点,如果能搞个图形化界面甚至管理全部节点(主控)那不是美滋滋了,带WAF的CDN了。

2019-11-7 20:22更新:

安装完成才发现我忘记了我在当CDN时遇到了400 Bad Request: The plain HTTP request was sent to HTTPS port错误,虽然搜索了解决方法但是最后还是糊里糊涂的解决了。(中间还不知道为什么输入字符会导致后面一个字符被删除掉。)
反正打算再重新编译openresty添加一个模块就延到现在才水了。
刚刚安装VeryNginx后打算加上之前的rtmp模块于是就在昨天重新编译了openresty。
重新编译前:

root@VM:~# /opt/verynginx/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.15.8.1
root@VM:~# /opt/verynginx/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.15.8.1
built by gcc 4.9.2 (Debian 4.9.2-10+deb8u2)
built with OpenSSL 1.0.1t  3 May 2016
TLS SNI support enabled
configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

重新编译的同时升级了openresty、OpenSSL、和添加了nginx-rtmp-module。虽然openresty只是微小的版本升级不过OpenSSL就升得比较“激进”了。
重新编译后:

root@VM:~/VeryNginx/openresty-1.15.8.2# /opt/verynginx/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.15.8.2
root@VM:~/VeryNginx/openresty-1.15.8.2# /opt/verynginx/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.15.8.2
built by gcc 4.9.2 (Debian 4.9.2-10+deb8u2)
built with OpenSSL 3.0.0-dev xx XXX xxxx
TLS SNI support enabled
configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-openssl=/root/openssl --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --add-module=/root/nginx-rtmp-module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

重新编译可以说很简单的之前也有过编译Nginx,这次由于参数却遇到了些阻碍。

./configure: error: invalid option "--with-s"
ERROR: failed to run command: sh ./configure --prefix=/opt/verynginx/openresty/nginx/nginx \...

折腾了一会才发现是复制-V里面的参数没有复制完整。

 + ngx_stream_lua_module was configured
adding module in /root/VeryNginx/openresty-1.15.8.2/../ngx_devel_kit-0.3.1rc1
./configure: error: no /root/VeryNginx/openresty-1.15.8.2/../ngx_devel_kit-0.3.1rc1/config was found
ERROR: failed to run command: sh ./configure --prefix=/opt/verynginx/openresty/nginx/nginx \...

刚开始还以为路径不正确检查了下两个版本没有发现有新建的文件夹最后检查Github上面的安装脚本后决定使用安装脚本上面的参数再加上新增的。于是就使用了下面参数

./configure --prefix=/opt/verynginx/openresty --user=nginx --group=nginx --with-openssl=/root/openssl --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-luajit --add-module=/root/nginx-rtmp-module

在等待一段时间后看到了

Type the following commands to build and install:
    make
    make install

奈斯~~~作最后停止当前的Nginx后make & make install后-V可以看到已经完成了。虽然安装好rtmp了却因为网络差不能流畅使用了。
至于下载新的OpenSSL、下载nginx-rtmp-module都在以前水过了。这次就不重复了。

2019年11月9日 02:30更新:

本来没有在Centos上面安装的打算的但是由于服务商ovz迁移到kvm后虽然数据还在可是启动任何服务都提示Authorization not available. Check if polkit service is running or see debug message for more information.不想折腾了就重装了事和更换CDN软件。开始安装Debian89(刚刚才发现有Debian10)可是Debian9安装RabbitMQ不成功就换Centos8了。

这次又遇到了sh: wget: command not foundsh: tar: command not found
No gmake nor make found in PATH.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.
、和有预感的You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib= option.

为了解决本次的问题:

yum install python36
yum install wget
yum install tar
yum groupinstall "Development Tools"  
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel

为了解决编译环境yum install gcc build-essential
在Centos没用只有使用yum groupinstall "Development Tools"了。
这次也要创建用户……同时也“激进”的使用dev的OpenSSL来编译。

[root@kvm-NewYork ~]# /opt/verynginx/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.15.8.2
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)
built with OpenSSL 3.0.0-dev xx XXX xxxx
TLS SNI support enabled
configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-openssl=/root/openssl --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

只要搞出配置文件同步就可以当CDN“集群”了,其实就是缺个“主控端”。

2019年12月2日 03:04更新:

本来一切安好的就在将系统由Debian8升级到Debian10的最后关头重启后再无法开机了而不得不重装系统。本次就干脆重装成Debian9(本来打算Debian10的,可惜没有)这样看到内核就比较新可以开启bbr来看看能不能优化网站的打开速度了。虽然看似将要的版本、rtmp、tls1.3要的到直接修改安装脚本准备一步到位了谁料这次又缺少了zlib库,懒得再折腾是否安装成功时记起几天前看到的brotli所以就换成brotli试试了,免得需要再重新编译。

brotli:

git clone https://github.com/eustas/ngx_brotli.git
cd ngx_brotli
git submodule update --init --recursive

编译Nginx时加上--with-http_gzip_static_module --add-module=/opt/ngx_brotli

./configure --prefix=/opt/verynginx/openresty --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --with-luajit --add-module=/root/nginx-rtmp-module --with-openssl-opt="enable-tls1_3 enable-ec_nistp_64_gcc_128" --with-http_gzip_static_module  --add-module=/root/ngx_brotli --with-pcre

照例-V:

root@Debian:~/VeryNginx# /opt/verynginx/openresty/nginx/sbin/nginx -v
nginx version: openresty/1.15.8.2
root@Debian:~/VeryNginx# /opt/verynginx/openresty/nginx/sbin/nginx -V
nginx version: openresty/1.15.8.2
built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
built with OpenSSL 1.1.1d  10 Sep 2019
TLS SNI support enabled
configure arguments: --prefix=/opt/verynginx/openresty/nginx --with-cc-opt=-O2 --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt=-Wl,-rpath,/opt/verynginx/openresty/luajit/lib --user=nginx --group=nginx --with-openssl=/root/openssl-1.1.1d --with-http_v2_module --with-http_sub_module --with-http_stub_status_module --add-module=/root/nginx-rtmp-module --with-openssl-opt='enable-tls1_3 enable-ec_nistp_64_gcc_128' --with-http_gzip_static_module --add-module=/root/ngx_brotli --with-pcre --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

开启brotli:

brotli                     on;
brotli_comp_level          6;
brotli_min_length          1k;
brotli_types               text/plain text/css text/xml text/javascript text/x-component application/json application/javascript application/x-javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype;

参考:

debian下安装编译程序所需的环境:
https://www.iteye.com/blog/xiaopaozi-661966
在Ubuntu或者Debian中安装PCRE库:
https://blog.csdn.net/andybegin/article/details/8734048
[emerg]: getpwnam(“nginx”) failed:
https://www.cnblogs.com/love3556/p/5962388.html
开始使用 VeryNginx:
https://imququ.com/post/use-verynginx.html
verynginx-web防火墙:
https://www.cnblogs.com/leo001/articles/10847587.html
VeryNginx:
https://github.com/alexazhou/VeryNginx
Github VeryNginx Wiki:
https://github.com/alexazhou/VeryNginx/wiki

Nginx报错“The plain HTTP request was sent to HTTPS port”问题解决办法:
https://blog.yoodb.com/yoodb/article/detail/1527
openresty:
https://openresty.org/

Linux_make命令提示no found make的解决办法:
https://blog.csdn.net/wx_mdq/article/details/10149279
centos7下安装iperf时出现 make: *** No targets specified and no makefile found. Stop.的解决方案:
https://www.cnblogs.com/yaqiong-hu/p/10654108.html
在CentOS 7和Ubuntu 14.03上安装Build Essentials:
http://www.linuxdown.net/install/soft/2016/0227/4849.html
centos7下安装pcre库(pcretest):
https://www.cnblogs.com/dingxiaoqiang/p/10860981.html
Centos7下yum安装Nginx:
https://www.jianshu.com/p/0beed9ca1649

Nginx 上部署 TLS1.3、Brotli、ECC双证书实践:
https://www.mf8.biz/nginx-install-tls1-3/

ChiuYut

2019年11月6日

发布者

ChiuYut

咦?我是谁?这是什么地方? Ya ha!我是ChiuYut!这里是我的小破站!