一、概述
除nginx官網源碼提供的各種模板,nginx還有第三方模塊。官方文檔中也列出了nginx的很多第三方模塊,除官網之外,還有很多的有用的模塊也能在Github上找到。
官網第三方模塊地址:https://www.nginx.com/resources/wiki/modules/
公司前端使用的是nginx代理,反向代理了很多域名,流量無法進行區分,nginx本身不支持按域名統計,需要安裝第三方模塊nginx-module-vts
二、配置安裝
2.1 因上線的業務正在運行着nginx程序,需要先查看當前nginx編譯參數。
# nginx -V Tengine version: Tengine/2.2.0 (nginx/1.8.1) built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) TLS SNI support enabled configure 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插件
# cd /usr/local/src/ # git clone git://github.com/vozlt/nginx-module-vts.git
2.3 重新編譯nginx,可運行make,不要make install
# cd /usr/local/src/tengine-2.2.0 # ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf ... --add-module=/usr/local/src/nginx-module-vts # make
2.4 替換原nginx命令,替換完成之后一定要重啟nginx否則不會生效。
# mv /usr/sbin/nginx /usr/sbin/nginx.bak # 備份原來的nginx命令 # cp objs/nginx /usr/sbin/nginx # 把tengine/objs目錄中的nginx復制到/usr/sbin/目錄中 # nginx -V # 查看是否是新編譯的nginx命令,需帶--add-module=/usr/local/src/nginx-module-vts此參數 # nginx -s stop # 需要重啟nginx,否則不生效,使用kill -USR2 `cat /var/run/nginx.pid`未生效,就被它折騰了一天, # nginx
2.5 配置ngin,使其生效
http {
vhost_traffic_status_zone;
...
server {
listen 1080;
server_name _; # 內網可以通過http://IP:1080/status 進行訪問,1080端口僅對內網開放
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
location / {
return 403;
}
}
}
三、界面展示
更多用法參數https://github.com/vozlt/nginx-module-vts說明
整體界面概覽:
備注:定時清空所有數據,重新統計
http://xxx.xxx.xxx.xxx/status/control?cmd=reset&group=* {"processingReturn":true,"processingCommandString":"reset","processingGroupString":"*","processingZoneString":"","processingCounts":71}