一、概述
除nginx官网源码提供的各种模板,nginx还有第三方模块。官方文档中也列出了nginx的很多第三方模块,除官网之外,还有很多的有用的模块也能在Github上找到。
官网第三方模块地址:https://www.nginx.com/resources/wiki/modules/
公司前端使用的是nginx代理,反向代理了很多域名,流量无法进行区分,nginx本身不支持按域名统计,需要安装第三方模块nginx-module-vts
二、配置安装
2.1 因上线的业务正在运行着nginx程序,需要先查看当前nginx编译参数。
1# nginx -V 2Tengine version: Tengine/2.2.0 (nginx/1.8.1) 3built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 4TLS SNI support enabled 5configure arguments: --prefix=/etc/nginx --with-pcre=../pcre-8.36 --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf ……
2.2 下载nginx-module-vts插件
1# cd /usr/local/src/ 2# git clone git://github.com/vozlt/nginx-module-vts.git
2.3 重新编译nginx,可运行make,不要make install
1# cd /usr/local/src/tengine-2.2.0 2# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf ... --add-module=/usr/local/src/nginx-module-vts 3# make
2.4 替换原nginx命令,替换完成之后一定要重启nginx否则不会生效。
1# mv /usr/sbin/nginx /usr/sbin/nginx.bak # 备份原来的nginx命令 2# cp objs/nginx /usr/sbin/nginx # 把tengine/objs目录中的nginx复制到/usr/sbin/目录中 3# nginx -V # 查看是否是新编译的nginx命令,需带--add-module=/usr/local/src/nginx-module-vts此参数 4# nginx -s stop # 需要重启nginx,否则不生效,使用kill -USR2 `cat /var/run/nginx.pid`未生效,就被它折腾了一天, 5# nginx
2.5 配置ngin,使其生效
1http { 2 vhost_traffic_status_zone; 3 4 ... 5 6 server { 7 8 ... 9 10 location /status { 11 vhost_traffic_status_display; 12 vhost_traffic_status_display_format html; 13 } 14 } 15}
三、界面展示
更多用法参数https://github.com/vozlt/nginx-module-vts说明
整体界面概览:

1备注:定时清空所有数据,重新统计 http://xxx.xxx.xxx.xxx/status/control?cmd=reset&group=* 2 3{"processingReturn":true,"processingCommandString":"reset","processingGroupString":"*","processingZoneString":"","processingCounts":71}