Nginx 与 Node.js 联合监控分两层:一是启用 stub_status 模块暴露 /nginx-status 查看连接、请求、吞吐;二是 Node.js 提供 /health 接口,Nginx 反向代理并标准化错误响应;可聚合多服务健康状态至静态监控页,并通过定制日志快速定位异常。

要让 Nginx 配合 Node.js 部署实现运行状态的实时可视化监控,核心是分两层:一层看 Nginx 自身工作状态(连接、请求、吞吐),另一层看后端 Node.js 服务是否存活、响应是否正常。两者不冲突,可同时启用并统一入口查看。
启用 Nginx 自带状态页(看代理网关本身)
Nginx 内置 stub_status 模块,无需额外安装(主流发行版和 OpenResty 默认已编译)。只需在 server 块或 http 块中添加一个受控 location:
- 确认模块已启用:
nginx -V 2>&1 | grep -o with-http_stub_status_module,有输出即支持 - 在配置中加入(例如放在 default server 下):
location /nginx-status {<br> stub_status on;<br> access_log off;<br> allow 127.0.0.1;<br> allow 10.0.0.0/8;<br> deny all;<br>} - 重载配置:
nginx -s reload,访问http://your-domain/nginx-status即可看到三行数字:活跃连接数、总接受/处理/请求量、当前读/写/等待连接数
暴露 Node.js 健康接口(看后端服务是否在线)
Node.js 应用需自身提供轻量健康检查端点(如 /health 或 /actuator/health),Nginx 不做业务判断,只负责转发和透传。推荐配置方式:
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
- 在 Node.js 中(例如 Express)添加路由:
app.get('/health', (req, res) => res.json({ status: 'UP', uptime: process.uptime() })) - Nginx 中配置反向代理路径,便于统一域名访问:
location /health/node-api {<br> proxy_pass http://node_backend/health;<br> proxy_set_header Host $host;<br> proxy_set_header X-Real-IP $remote_addr;<br> proxy_intercept_errors on;<br> error_page 500 502 503 504 /50x.json;<br>} - 配合
error_page返回标准化 JSON,即使 Node.js 宕机,前端或监控脚本也能收到明确的{"status":"DOWN"}响应
聚合展示多服务健康状态(可选但实用)
如果部署了多个 Node.js 实例或微服务,可借助简单 HTML + JS 构建一个聚合监控页:
- 将静态页(如
/var/www/monitor/index.html)放入 Nginx 可服务目录 - 页面内用 JavaScript 定时发起 fetch 请求:
fetch('/health/node-api')、fetch('/health/admin-service')等 - 根据 HTTP 状态码与响应体中的
status字段,动态渲染绿色(UP)或红色(DOWN)卡片,并显示响应时间 - 该页面可直接通过
http://your-domain/monitor访问,无需后端渲染,运维和值班人员一目了然
联动日志辅助定位问题
光看状态页不够,需结合日志快速响应异常:
- 在 upstream 块中开启详细上游日志:
log_format upstreamlog '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_addr $upstream_response_time $request_time'; - 为 health 接口单独设 access_log,方便过滤分析:
location /health/ {<br> access_log /var/log/nginx/health.log upstreamlog;<br> proxy_pass ...;<br>} - 当发现某服务频繁返回 502 或超时,立刻查对应
upstream_response_time和 Node.js 进程日志(如 PM2 的pm2 logs)

















