Nginx stub_status模块提供实时连接与请求状态快照,自1.9.2默认内置;需在server块中配置location启用,限制访问权限;返回字段包括Active connections、accepts、handled、requests及Reading/Writing/Waiting连接数。

Nginx 的 stub_status 模块是一个轻量级的内置模块,用于实时查看 Nginx 的基本连接和请求统计信息。它不记录历史数据,只提供当前瞬间的状态快照,适合快速诊断连接数、活跃请求等基础运行状况。
确认模块已启用
从 Nginx 1.9.2 开始,ngx_http_stub_status_module 默认编译进核心,无需额外加载。但如果你使用的是精简版(如某些 Alpine 官方镜像或自定义编译版本),可通过以下命令确认是否可用:
若无输出,说明未启用,需重新编译并添加 --with-http_stub_status_module 参数。
配置 stub_status 位置块
在任意 server 块中添加一个 location,例如:
location /nginx-status {stub_status;
allow 127.0.0.1;
deny all;
}
说明:
-
stub_status指令必须放在 location 内,不能写在 server 或 http 级别 -
allow/deny用于限制访问来源,强烈建议仅允许本地或运维 IP,避免暴露敏感状态 - 路径名(如
/nginx-status)可自定义,但不要与业务路径冲突
访问并理解返回内容
重启 Nginx 后,用 curl 或浏览器访问该地址(如 curl http://127.0.0.1/nginx-status),典型输出如下:
server accepts handled requests
12345 12345 67890
Reading: 0 Writing: 1 Waiting: 2
各字段含义:
- Active connections:当前所有 TCP 连接数(包括空闲 keepalive 连接)
- accepts:Nginx 自启动以来接受的总连接数
- handled:成功处理的连接数(通常等于 accepts,除非达到连接限制)
- requests:客户端发起的 HTTP 请求总数
- Reading:正在读取请求头的连接数
- Writing:正在向客户端发送响应的连接数
- Waiting:已处理完请求、保持 keepalive 等待新请求的空闲连接数
配合监控工具简单采集
若需长期观测,可用脚本定时抓取并上报。例如用 Bash 提取活跃连接数:
curl -s http://127.0.0.1/nginx-status | head -1 | awk '{print $3}'常见组合建议:
- 搭配 Prometheus:使用 nginx-lua-prometheus(功能更全,需 Lua 支持)
- 临时排查高连接:关注
Active connections是否持续接近worker_connections设置值 - 判断请求积压:若
Writing长时间偏高,可能后端响应慢或网络延迟大











