启用 stub_status 模块需两步:编译时添加 --with-http_stub_status_module 参数,配置中定义 location /nginx-status 并限制访问;它仅监控 nginx 自身连接与请求状态,不涉及应用层。

源码安装 Nginx 时配置 stub_status 模块,核心是两步:编译阶段启用模块、运行时配置 location 路径暴露状态接口。它不依赖外部服务,也不监控 PHP 或 ThinkPHP 应用层,只反映 Nginx 自身连接与请求处理情况。
确认并启用 stub_status 模块
该模块默认不编译进 Nginx,必须显式添加参数:
- 进入 Nginx 源码目录,执行
./configure时加入--with-http_stub_status_module - 常见完整示例:
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module - 之后运行
make && make install - 安装完成后验证:
/usr/local/nginx/sbin/nginx -V 2>&1 | grep with-http_stub_status_module,有输出即表示模块已就绪
配置 status 接口路径
模块启用后需在 Nginx 配置中定义可访问的 endpoint,推荐放在 server 块内,并限制访问权限:
- 编辑
nginx.conf或站点配置文件(如/usr/local/nginx/conf/conf.d/default.conf) - 在
server { }内添加如下内容:location /nginx-status {<br> stub_status;<br> access_log off;<br> allow 127.0.0.1;<br> deny all;<br>} - 注意:
stub_status指令无参数(1.7.5+ 版本),旧版本才需写stub_status on;
测试与验证
配置生效后,本地请求即可获取原始指标数据:
- 先检查语法:
/usr/local/nginx/sbin/nginx -t - 重载配置:
/usr/local/nginx/sbin/nginx -s reload - 执行
curl http://127.0.0.1/nginx-status,返回类似:Active connections: 3<br>server accepts handled request<br> 12345 12345 23456<br>Reading: 0 Writing: 1 Waiting: 2
- 若返回 403 或 404,请核对 IP 白名单、location 路径拼写及是否被 rewrite 规则覆盖
安全与部署建议
生产环境不建议直接暴露 status 接口,尤其避免使用公网可访问路径(如 /status):
- 路径名尽量非通用(如
/_nxs或/ngx-mon),降低被探测风险 - 严格限制
allowIP,仅允许可信监控节点或本机采集程序 - 如需远程采集,建议配合反向代理 + Basic Auth,或走独立监听端口(如
listen 127.0.0.1:8081)隔离主服务 - 禁用 access_log 可减少日志干扰,也避免敏感路径被记录











