要通过nginx原生模块实时查看活跃连接数,需启用http_stub_status_module模块并配置/stub_status路径,配合访问控制与监控工具实现瞬时连接数采集与告警。

要通过 Nginx 原生模块实时查看活跃连接数,核心是启用并正确配置 http_stub_status_module 模块提供的状态页。这个模块默认编译进大多数官方二进制包(如 nginx.org 官方源或主流 Linux 发行版包),无需额外编译,但需在配置中显式开启。
确认模块已启用
运行以下命令检查模块是否存在:
nginx -V 2>&1 | grep -o with-http_stub_status_module
若输出含 with-http_stub_status_module,说明已内置支持;若无,需重新编译 Nginx 并添加 --with-http_stub_status_module 参数。
配置 location 启用状态页
在任意 server 块内(推荐放在默认 server 或专用监控 server 中)添加如下配置:
- 使用
location /stub_status(路径可自定义,但需与访问路径一致) - 添加
stub_status on;指令启用状态页 - 强烈建议加访问控制,例如只允许本地或内网 IP 访问:
allow 127.0.0.1;allow 192.168.1.0/24;deny all;
示例片段:
server {
listen 80;
server_name localhost;
location /stub_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
理解状态页输出字段含义
访问 http://your-nginx-ip/stub_status(如 curl http://127.0.0.1/stub_status)会返回类似内容:
Active connections: 3 server accepts handled requests 12345 12345 23456 Reading: 0 Writing: 1 Waiting: 2
- Active connections:当前所有活跃连接总数(TCP 连接数,含 waiting、reading、writing 状态)
- accepts:Nginx 自启动以来接受的总连接数
- handled:成功处理的连接数(通常等于 accepts,除非达到连接限制)
- requests:客户端发起的 HTTP 请求总数
- Reading:正在读取请求头的连接数
- Writing:正在向客户端发送响应的连接数
- Waiting:已处理完请求、保持长连接等待新请求的空闲连接数(即 keep-alive 状态)
配合工具实现持续监控
状态页本身是静态文本,适合脚本采集。常见做法:
- 用
curl -s http://127.0.0.1/stub_status | awk 'NR==1 {print $3}'提取 Active connections 数值 - 结合 Prometheus,使用 nginx-lua-prometheus(更推荐)或自定义 exporter 抓取并暴露指标
- 配合 Zabbix、Telegraf 等采集器,定时抓取并告警(如 Active connections > 1000 持续 5 分钟)
注意:该状态页不提供历史趋势,仅反映瞬时快照,需搭配外部存储与可视化工具使用。











