nginx 通过 ngx_http_stub_status_module 模块在 server 块中配置 location /nginx-status 可暴露轻量级状态页,返回 active connections、accepts/handled/requests 及 reading/writing/waiting 连接数等纯文本指标,需启用模块、限制访问且不可替代专业监控。

在 Nginx 中,server 块本身不直接提供服务器状态监控接口,但可以通过内置模块(如 ngx_http_stub_status_module)配合 server 块配置,暴露一个轻量级的运行状态页面。该功能默认编译进大多数二进制发行版(如 Ubuntu/Debian 的官方包),但需确认启用并正确配置。
启用 stub_status 模块并配置 server 块
确保 Nginx 已编译包含 http_stub_status 模块(可通过 nginx -V 2>&1 | grep -o with-http_stub_status-module 验证)。然后在某个 server 块中添加 location 路由来暴露状态接口:
- 推荐使用独立的
server块(如监听本地 8080 端口或仅允许内网访问),避免与业务端口混用 - 在该
server块中定义location /nginx-status { stub_status; } - 务必添加访问控制(如
allow 127.0.0.1;、deny all;),防止公开暴露
返回的状态数据说明
访问配置好的路径(如 http://localhost/nginx-status)会返回纯文本格式的实时指标:
- Active connections:当前活跃连接数(含等待、读取、写入等状态)
- server accepts handled requests:三个累加值——接受连接数、成功处理连接数、总请求数
- Reading/Writing/Waiting:当前各阶段连接数(Waiting 通常指 keep-alive 等待中的连接)
注意:该接口不支持 JSON 或结构化输出,仅适合人工查看或简单脚本解析。
结合健康检查与自动化采集
生产环境中常将该接口用于基础健康探活或指标采集:
- 可用
curl -f http://127.0.0.1/nginx-status配合 shell 脚本做存活检测 - Prometheus 可通过
nginx-exporter(第三方 exporter)抓取更丰富的指标,而非直接依赖 stub_status - 若需更详细指标(如按 location 统计、响应时间分布),建议启用
ngx_http_reqstat_module或接入 OpenResty + Lua 插件
常见问题与限制
stub_status 功能简单,但也存在明显局限:
- 不支持认证(仅靠 IP 白名单控制),不可暴露到公网
- 无历史数据、无聚合能力,无法替代专业监控系统
- 某些精简版 Nginx(如 Alpine 官方镜像)可能未启用该模块,需自行编译或换用完整镜像
- 返回内容无 HTTP 头部标识(如 Content-Type),部分工具解析时需手动指定 text/plain
不复杂但容易忽略访问控制和模块可用性,配完记得 reload 并用 curl 验证是否返回 200 和预期文本。











