phpenv中nginx默认未启用stub_status模块,需手动在server块中添加location /nginx-status { stub_status on; access_log off; allow 127.0.0.1; deny all; },并重载配置后访问http://127.0.0.1/nginx-status查看连接状态。

phpEnv 是 Windows 下的集成环境套件,它把 Nginx、PHP、MySQL 打包在一起运行,但默认不启用 ngx_http_stub_status_module,也不开放状态接口。直接访问 /status 会 404,用 netstat 或 ss 查到的连接也混着其他进程——得先确认 Nginx 实际监听端口和 worker 进程归属,再针对性抓取。
确认 phpEnv 中 Nginx 的监听端口与进程 PID
phpEnv 默认把 Nginx 配置在 80 端口(也可能被 IIS/WSL 占用而 fallback 到 8080),且以当前 Windows 用户身份运行(非系统服务),所以不能靠 service nginx status 或 systemctl 查。正确做法是:
- 打开 phpEnv 控制面板 → 查看「Nginx」服务状态旁显示的端口号(常见为
:80或:8080) - 在命令提示符中执行:
netstat -ano | findstr :80(把80换成你实际看到的端口),记下最后一列的 PID - 再执行:
tasklist /fi "pid eq 1234"(把1234换成上一步的 PID),确认映像名称是nginx.exe,且不是httpd.exe或其他
启用 stub_status 模块并配置可访问的 status 路径
phpEnv 自带的 Nginx 二进制通常**已编译进 ngx_http_stub_status_module(可通过 nginx -V 2>&1 | findstr stub 验证)**,但默认没启用。你需要手动改配置:
- 编辑
phpEnv\nginx\conf\nginx.conf,在任意一个server块内(比如监听80的那个)加入:
location /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
- 保存后,在 phpEnv 面板中点击「重载 Nginx 配置」或执行:
phpEnv\nginx\nginx.exe -t校验语法,再-s reload - 浏览器访问
http://127.0.0.1/nginx-status,应返回类似:Active connections: 5<br>server accepts handled requests<br>123 123 456<br>Reading: 0 Writing: 1 Waiting: 4
用 netstat 快速统计 ESTABLISHED 连接数(绕过 stub_status)
Windows 没有 ss 命令,netstat 是唯一可用的原生命令,但要注意过滤干扰项:
- 只统计目标端口的 ESTABLISHED 连接(排除 LISTENING 和 TIME_WAIT):
netstat -an | findstr ":80.*ESTABLISHED" | find /c ":" - 若 Nginx 监听
:8080,把上面的:80换成:8080 - 该数值 ≈
Active connections,但不等于Reading + Writing + Waiting:因为netstat统计的是 TCP 层连接,而 stub_status 中的Waiting是 keep-alive 空闲连接,netstat无法区分 - 如果结果异常高(如几百个),再加
| findstr -v "127.0.0.1"排除本地调试请求,确认是否真有外部并发
为什么 curl http://127.0.0.1/nginx-status 返回 404 或 403
这是最常卡住的地方,原因很具体:
-
404:配置没生效 —— 检查nginx.conf是否在正确的server块里加了location;phpEnv 有时会从子配置文件(如servers\default.conf)加载,要改对位置 -
403:IP 限制触发 ——allow 127.0.0.1; deny all;是安全默认,但如果你从 WSL 或虚拟机访问,需改成allow 192.168.0.0/16;或临时注释掉 -
502或空白页:Nginx worker 进程崩溃或未启动 —— 回 phpEnv 面板点「启动 Nginx」,再tasklist /fi "imagename eq nginx.exe"看进程是否存在
stub_status 输出里的 Waiting 值容易被忽略:它代表 keep-alive 空闲连接,不发请求时也占着连接数。如果 Active connections 很高但 Reading + Writing 接近 0,大概率是客户端开启了长连接却没持续发请求——这不是问题,是设计如此。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











