nginx增加VTS模块的实现

 更新时间:2026年01月16日 10:26:30   作者:Code Rhythm  
VTS模块用于实时监控Nginx虚拟主机的流量状态、请求指标、响应性能等数据,并提供可视化页面和API接口,方便运维人员排查问题、分析流量趋势,下面就来详细的介绍,感兴趣的可以了解一下

一、VTS模块的核心功能

Nginx Virtual Host Traffic Status Module 实时监控 Nginx 虚拟主机(或服务器块)的流量状态、请求指标、响应性能等数据,并提供可视化页面和 API 接口,方便运维人员排查问题、分析流量趋势

VTS 模块能监控的指标覆盖 “请求 - 流量 - 响应” 全链路,且支持按虚拟主机、服务、位置(Location)粒度拆分

功能分类核心监控指标
请求指标总请求数、成功请求数、各 HTTP 状态码(2xx/3xx/4xx/5xx)请求数、每秒请求数(RPS)
流量指标入站流量(接收字节数)、出站流量(发送字节数)、每秒流量(BPS)
响应性能指标平均响应时间、响应时间分布(如 100ms 内、500ms 内的请求占比)
连接指标当前活跃连接数、空闲连接数、已关闭连接数
过滤与排序支持按 “请求数、流量、响应时间” 等维度排序,也可过滤特定虚拟主机或状态码
数据输出方式1. 内置 HTML 可视化页面(直观查看)
2. JSON/CSV/Prometheus 格式 API(集成监控系统)

二、增加VTS模块

首先需要上传vts模块包nginx-module-vts-master.zip到/root家目录

下载与当前 Nginx 版本一致的源码和 VTS 模块源码
执行./configure时,在复制的原有参数后追加--add-module=path/nginx-module-vts

[root@web-2 ~]# vim install_nginx.sh
#!/bin/bash
set -e

#下载nginx
mkdir  -p   /nginx9
cd  /nginx9
curl  -O  https://nginx.org/download/nginx-1.28.0.tar.gz
echo   "下载nginx成功"

#解压nginx源码包
tar  xf  nginx-1.28.0.tar.gz
cd  nginx-1.28.0

#解决nginx依赖的软件 
yum  install gcc pcre-devel  openssl-devel zlib-devel  vim  net-tools unzip -y

#解压vts模块包 nginx-module-vts-master.zip
cp /root/nginx-module-vts-master.zip .
unzip nginx-module-vts-master.zip

#编译前的配置工作
./configure  --prefix=/usr/local/nginx9 --with-http_ssl_module  
--with-http_v2_module --with-http_v3_module --with-http_stub_status_module 
--with-stream --with-stream_ssl_module --with-threads  
--add-module=/nginx9/nginx-1.28.0/nginx-module-vts-master

#编译
make  -j  2
#编译安装
make  install

#修改PATH环境变量
echo 'PATH=/usr/local/nginx9/sbin:$PATH' >> /etc/bashrc
echo "安装nginx成功,请使用nginx"

#考虑nginx开机自启
echo  '/usr/local/nginx9/sbin/nginx' >>/etc/rc.local
chmod +x /etc/rc.d/rc.local

su

执行脚本

[root@web2 ~]# bash install_nginx.sh

如需给原来的nginx增加则需替换二进制文件,且参数要–prefix要一致,用objs/nginx替换sbin/nginx

目前有多个版本的nginx了,如何启动指定版本的nginx?
-> 使用绝对路径去启动nginx

/usr/local/nginx1/sbin/nginx
/usr/local/nginx1/sbin/nginx -s stop
/usr/local/nginx1/sbin/nginx -s reload

直接输入nginx会启动最新版本的nginx,因为PATH变量里的最左边的路径是最新的nginx的安装路径

[root@web2 sbin]# /usr/local/nginx1/sbin/nginx -s stop
[root@web2 sbin]# which nginx
/usr/local/nginx9/sbin/nginx

启动新的nginx

[root@web2 sbin]# nginx
[root@web2 sbin]# ps aux|grep nginx
root        5435  0.0  0.0  12220  2464 ?        Ss   16:35   0:00 nginx: master process nginx
sc          5436  0.0  0.1  16632  5536 ?        S    16:35   0:00 nginx: worker process
root        5438  0.0  0.0   6636  2176 pts/0    S+   16:35   0:00 grep --color=auto nginx
[root@web2 sbin]# nginx -V
nginx version: nginx/1.28.0
built by gcc 11.5.0 20240719 (Red Hat 11.5.0-5) (GCC) 
built with OpenSSL 3.2.2 4 Jun 2024
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx9 --user=sc --group=sc --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-threads --add-module=/nginx9/nginx-1.28.0/nginx-module-vts-master

修改nginx.conf主配置文件,添加支持vts的功能

[root@web2 sbin]# cd /usr/local/nginx9/conf/
[root@web2 conf]# vim  nginx.conf
http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
                      
	#添加vts功能的配置
	vhost_traffic_status_zone;
	vhost_traffic_status_filter_by_host on;
	    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  www.feng.com;
        #charset koi8-r;
        access_log  logs/feng.com.access.log  main;
        location / {
            root   html;
            index  index.html index.htm;
        }
       #添加vts功能的配置
		location /status {
			vhost_traffic_status_display;
			vhost_traffic_status_display_format html;	
		}
  }

..... 省略部分配置

刷新配置

[root@web2 conf]# nginx -t
nginx: the configuration file /usr/local/nginx9/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx9/conf/nginx.conf test is successful
[root@web2 conf]# nginx -s reload

最后去访问web服务器

访问效果

到此这篇关于nginx增加VTS模块的实现的文章就介绍到这了,更多相关nginx VTS模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Nginx中动态upstream域名解析失效问题解决的几种方法

    Nginx中动态upstream域名解析失效问题解决的几种方法

    本文主要介绍了Nginx中实现动态解析upstream域名的方法,强调了使用resolver指令与变量触发、作用域正确、配置兼容三要素的重要性,并提供了四种解决方案,下面就来详细的介绍一下
    2026-04-04
  • nginx ssl免密码重启教程详解

    nginx ssl免密码重启教程详解

    这篇文章给大家介绍了nginx 如何启动以及nginx ssl 免密码重启 的方法,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-01-01
  • nginx基于域名,端口,不同IP的虚拟主机设置的实现

    nginx基于域名,端口,不同IP的虚拟主机设置的实现

    这篇文章主要介绍了nginx基于域名,端口,不同IP的虚拟主机设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Nginx 配置跨域的实现及常见问题解决

    Nginx 配置跨域的实现及常见问题解决

    本文主要介绍了Nginx 配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-06-06
  • 解读1g内存的电脑nginx能支持多少并发

    解读1g内存的电脑nginx能支持多少并发

    这篇文章主要介绍了1g内存的电脑nginx能支持多少并发的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • nginx rewrite参数解析

    nginx rewrite参数解析

    这篇文章主要介绍了nginx rewrite参数解析的相关资料,需要的朋友可以参考下
    2022-11-11
  • Nginx 设置域名转发到指定端口的实现方法

    Nginx 设置域名转发到指定端口的实现方法

    这篇文章主要介绍了Nginx 设置域名转发到指定端口的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx HTTPS代理大文件加载失败的排查与解决方案

    Nginx HTTPS代理大文件加载失败的排查与解决方案

    本文基于一次生产环境中的实际案例,详细解析了Nginx代理配置不当导致HTTPS访问下前端资源加载失败的问题,通过日志分析、参数调优和原理说明,为开发者提供完整的排查思路与解决方案,需要的朋友可以参考下
    2025-12-12
  • Nginx Location配置全过程

    Nginx Location配置全过程

    介绍了Nginx的Location语法结构,涵盖标准/正则uri匹配、匹配标识优先级(精确>正则>通用),root与alias指令的区别(保留/替换前缀),以及通过错误日志调试Location配置的方法
    2025-07-07
  • Nginx批量添加二级子域名完美方案

    Nginx批量添加二级子域名完美方案

    这篇文章主要介绍了Nginx批量添加二级子域名完美方案,本文讲解使用正则表达式批量匹配指定域名的二级域名虚拟主机,需要的朋友可以参考下
    2015-04-04

最新评论