Nginx 状态检查配置:通过 stub_status 监控服务状态
Nginx 的stub_status模块提供了简单的状态检查功能,可实时查看服务器的连接数、请求处理情况等关键指标,是监控 Nginx 运行状态的常用工具。本文详细讲解stub_status的配置方法、状态指标含义及实战应用。
启用 stub_status 模块
stub_status是 Nginx 的非核心模块,默认不编译,需在编译 Nginx 时通过--with-http_stub_status_module参数启用。
- 检查模块是否已安装:
执行nginx -V,若输出包含--with-http_stub_status_module,则模块已启用。
基础配置:暴露状态检查地址
通过location块配置状态检查路径(如/nginx_status),示例如下:
1 | server { |
配置说明
stub_status on:开启状态检查功能,访问/nginx_status时返回状态信息;allow/deny:限制访问来源(必填!避免状态信息暴露给公网,存在安全风险)。
状态信息详解
配置完成后,通过curl http://example.com/nginx_status访问,返回内容如下:
1 | Active connections: 2 |
指标含义
- Active connections:当前活跃的连接数(包含正在处理和等待的连接);
- accepts:服务器启动以来共接受的连接总数;
handled:服务器启动以来成功处理的连接总数(通常与accepts相等,除非连接被拒绝);
requests:服务器启动以来处理的总请求数(HTTP 请求数,可能大于连接数,因 HTTP 长连接可处理多个请求); - Reading:正在读取客户端请求头的连接数;
Writing:正在向客户端发送响应的连接数;
Waiting:处于空闲状态的长连接数(等待客户端发送新请求)。
安全加固:限制访问权限
状态信息包含服务器敏感数据(如连接数),必须限制访问来源,常用方法:
- IP 白名单(推荐):
1 | location /nginx_status { |
密码认证:
结合auth_basic模块设置用户名密码(适合无固定 IP 的场景):1
2
3
4
5location /nginx_status {
stub_status on;
auth_basic "Nginx Status"; # 认证提示信息
auth_basic_user_file /etc/nginx/.htpasswd; # 密码文件路径
}- 密码文件生成:使用
htpasswd工具(htpasswd -c /etc/nginx/.htpasswd admin)。
- 密码文件生成:使用
实战应用:监控与告警
通过stub_status获取的指标可用于监控服务器状态,常见场景:
- 实时查看负载:
定期执行curl http://example.com/nginx_status,观察Active connections和requests变化,判断服务器负载; - 结合监控工具:
将状态信息接入 Prometheus+Grafana(通过nginx_exporter),绘制趋势图并设置告警(如Active connections超过阈值时告警); - 故障排查:
- 若
Writing数值持续过高,可能后端服务响应缓慢; - 若
Waiting数值过高,可能长连接设置不合理(可调整keepalive_timeout)。
- 若
注意事项
- 性能影响:
stub_status本身轻量,几乎不消耗服务器资源,可放心启用; - 版本差异:不同 Nginx 版本的状态输出格式一致,指标含义无差异;
- 替代方案:若需更详细的指标(如按虚拟主机统计),可使用第三方模块(如
ngx_http_reqstat_module)或商业监控工具。