0%

Nginx配置状态检查地址

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
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name example.com;

# 配置状态检查路径
location /nginx_status {
stub_status on; # 启用状态检查
allow 192.168.1.0/24; # 仅允许内部网段访问(安全加固)
deny all; # 拒绝其他IP访问
}
}

配置说明

  • stub_status on:开启状态检查功能,访问/nginx_status时返回状态信息;
  • allow/deny:限制访问来源(必填!避免状态信息暴露给公网,存在安全风险)。

状态信息详解

配置完成后,通过curl http://example.com/nginx_status访问,返回内容如下:

1
2
3
4
Active connections: 2 
server accepts handled requests
100 100 300
Reading: 0 Writing: 1 Waiting: 1

指标含义

  1. Active connections:当前活跃的连接数(包含正在处理和等待的连接);
  2. accepts:服务器启动以来共接受的连接总数;
    handled:服务器启动以来成功处理的连接总数(通常与accepts相等,除非连接被拒绝);
    requests:服务器启动以来处理的总请求数(HTTP 请求数,可能大于连接数,因 HTTP 长连接可处理多个请求);
  3. Reading:正在读取客户端请求头的连接数;
    Writing:正在向客户端发送响应的连接数;
    Waiting:处于空闲状态的长连接数(等待客户端发送新请求)。

安全加固:限制访问权限

状态信息包含服务器敏感数据(如连接数),必须限制访问来源,常用方法:

  1. IP 白名单(推荐):
1
2
3
4
5
6
location /nginx_status {
stub_status on;
allow 192.168.1.100; # 允许特定IP访问
allow 192.168.1.0/24; # 允许特定网段访问
deny all; # 拒绝其他所有IP
}
  1. 密码认证
    结合auth_basic模块设置用户名密码(适合无固定 IP 的场景):

    1
    2
    3
    4
    5
    location /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获取的指标可用于监控服务器状态,常见场景:

  1. 实时查看负载
    定期执行curl http://example.com/nginx_status,观察Active connectionsrequests变化,判断服务器负载;
  2. 结合监控工具
    将状态信息接入 Prometheus+Grafana(通过nginx_exporter),绘制趋势图并设置告警(如Active connections超过阈值时告警);
  3. 故障排查
    • Writing数值持续过高,可能后端服务响应缓慢;
    • Waiting数值过高,可能长连接设置不合理(可调整keepalive_timeout)。

注意事项

  1. 性能影响stub_status本身轻量,几乎不消耗服务器资源,可放心启用;
  2. 版本差异:不同 Nginx 版本的状态输出格式一致,指标含义无差异;
  3. 替代方案:若需更详细的指标(如按虚拟主机统计),可使用第三方模块(如ngx_http_reqstat_module)或商业监控工具。

欢迎关注我的其它发布渠道