VTS(Nginx Virtual Host Traffic Status)是Nginx的一个第三方监控模块,用于实时统计Nginx的运行状态(如请求量、连接数、流量、各虚拟主机性能等),并以可视化界面展示。以下是编译安装Nginx并添加VTS模块的完整步骤(适用于Linux系统,无需深入代码,按步骤操作即可)。
![图片[1]_Nginx增加VTS模块实现指南(详细步骤)_知途无界](https://zhituwujie.com/wp-content/uploads/2026/01/d2b5ca33bd20260117120921-1024x602.png)
一、准备工作:环境检查与依赖安装
1. 确认当前Nginx版本(可选)
如果已安装Nginx,先查看版本(后续编译时需匹配版本):
nginx -v # 输出示例:nginx version: nginx/1.24.0
2. 安装编译依赖
VTS模块需要Nginx支持http_stub_status_module(默认已编译,若未编译需手动开启),同时编译过程需要以下工具和库:
# CentOS/RHEL系统
yum install -y gcc make pcre-devel zlib-devel openssl-devel wget
# Ubuntu/Debian系统
apt update && apt install -y gcc make libpcre3-dev zlib1g-dev libssl-dev wget
二、下载Nginx源码与VTS模块源码
VTS模块需单独下载,且需与Nginx版本兼容(建议使用Nginx稳定版,如1.20.x、1.24.x)。
1. 下载Nginx源码
从Nginx官网获取对应版本的源码包(以Nginx 1.24.0为例):
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
2. 下载VTS模块源码
VTS模块托管在GitHub,克隆或下载ZIP包:
# 克隆仓库(需Git)
git clone https://github.com/vozlt/nginx-module-vts.git
# 或直接下载ZIP包(无Git时)
wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.1.zip
unzip v0.2.1.zip && mv nginx-module-vts-0.2.1 nginx-module-vts
三、编译Nginx并添加VTS模块
1. 配置编译参数(关键步骤)
使用./configure命令添加VTS模块,并保留原Nginx的功能(如SSL、HTTP/2等)。若已安装Nginx,可通过nginx -V查看原编译参数(复制后追加--add-module=路径)。
示例配置(假设原Nginx无额外模块):
./configure \
--prefix=/usr/local/nginx \ # Nginx安装目录(可自定义)\
--with-http_ssl_module \ # 启用SSL(若需要HTTPS)\
--with-http_v2_module \ # 启用HTTP/2(可选)\
--with-http_stub_status_module \ # 必须启用(VTS依赖)\
--add-module=../nginx-module-vts # VTS模块路径(根据实际路径调整)
注意:若原Nginx有其他模块(如--with-http_realip_module),需一并加入配置参数,否则编译后功能会丢失!
2. 编译与安装
配置完成后,执行编译(-j参数指定CPU核数加速,如-j4):
make -j4 # 编译(不要直接make install,避免覆盖原配置)
3. 替换原Nginx二进制文件(关键!)
编译生成的objs/nginx是新二进制文件,需替换原Nginx的可执行文件(先备份原文件!):
# 备份原Nginx(假设原Nginx安装在/usr/sbin/nginx)
cp /usr/sbin/nginx /usr/sbin/nginx.bak
# 复制新编译的二进制文件到原路径
cp objs/nginx /usr/sbin/nginx
# 验证是否替换成功(查看版本及模块)
nginx -V # 输出应包含"--add-module=../nginx-module-vts"
四、配置VTS模块并验证
1. 修改Nginx配置文件(启用VTS)
编辑Nginx主配置文件(通常为/usr/local/nginx/conf/nginx.conf或/etc/nginx/nginx.conf),添加VTS相关配置:
http {
# ... 其他全局配置 ...
# 启用VTS模块(必须放在http块内)
vhost_traffic_status_zone; # 定义状态监控区域
vhost_traffic_status_filter on; # 启用过滤(可选)
vhost_traffic_status_filter_by_host on; # 按域名过滤(可选)
server {
listen 80;
server_name localhost;
# ... 其他server配置 ...
# 配置VTS监控页面访问路径(如/status)
location /status {
vhost_traffic_status_display; # 显示监控数据
vhost_traffic_status_display_format html; # 格式为HTML(默认)
# 可选:限制IP访问(增强安全)
allow 127.0.0.1; # 允许本地访问
deny all; # 拒绝其他IP
}
}
}
2. 检查配置并重启Nginx
# 检查配置是否有误
nginx -t
# 重启Nginx(根据安装方式选择命令)
systemctl restart nginx # 若通过systemd管理
# 或
/usr/local/nginx/sbin/nginx -s reload # 平滑重启
五、访问VTS监控界面
打开浏览器,访问http://你的服务器IP/status(如http://192.168.1.100/status),即可看到VTS的可视化监控界面,包含以下信息:
- 全局统计:总请求数、连接数、流量(入/出)、请求耗时分布;
- 虚拟主机统计:每个域名的请求量、流量、状态码(2xx/4xx/5xx);
- 上游服务器统计(若配置了反向代理):后端服务器的响应时间、健康状态。
常见问题与解决
1. 编译报错:“unknown directive ‘vhost_traffic_status_zone’”
原因:VTS模块未正确编译进Nginx。检查./configure是否添加了--add-module=路径,或路径是否正确。
2. 访问/status页面404
原因:Nginx配置中未添加location /status块,或路径错误。检查nginx.conf中是否正确配置了location。
3. 原Nginx功能丢失(如SSL无法使用)
原因:编译时未保留原Nginx的模块参数。通过nginx -V查看原编译参数,重新配置时完整复制。
总结
添加VTS模块的核心是重新编译Nginx并加入模块源码,关键是保留原Nginx的功能参数,避免配置丢失。完成后,通过可视化界面可实时监控Nginx运行状态,便于排查性能瓶颈或异常流量。

























暂无评论内容