插件窝 干货文章 nginx中状态统计如何实现

nginx中状态统计如何实现

Nginx status 状态 模块 232    来源:    2025-04-21

Nginx 状态统计实现方法

Nginx 提供了状态统计模块,可以让你监控服务器的运行状态。以下是实现 Nginx 状态统计的几种方法:

方法一:使用 ngx_http_stub_status_module 模块

这是 Nginx 自带的简单状态统计模块。

  1. 确认模块已编译

    nginx -V 2>&1 | grep -o with-http_stub_status_module
    

    如果输出 with-http_stub_status_module 则表示已包含

  2. 配置 Nginx: 在 server 块中添加:

    location /nginx_status {
       stub_status on;
       access_log off;
       allow 127.0.0.1;    # 只允许本地访问
       allow 192.168.1.0/24; # 或者允许特定IP段
       deny all;          # 拒绝其他所有
    }
    
  3. 重新加载配置

    nginx -s reload
    
  4. 访问统计页面: 访问 http://your-server/nginx_status 会显示类似:

    Active connections: 291 
    server accepts handled requests
    16630948 16630948 31070465 
    Reading: 6 Writing: 179 Waiting: 106 
    

方法二:使用第三方模块 ngx_http_status_module

如果需要更详细的数据,可以使用第三方模块:

  1. 下载并编译

    wget https://github.com/yaoweibin/nginx_status_module/archive/master.zip
    unzip master.zip
    cd nginx-1.x.x
    ./configure --add-module=../nginx_status_module-master
    make && make install
    
  2. 配置 Nginx

    http {
       status_zone server_zone;
    
       server {
           location /status {
               status;
           }
       }
    }
    

方法三:使用商业版 Nginx Plus

Nginx Plus 提供了更丰富的状态统计功能:

server {
    location /status {
        status;
        allow 127.0.0.1;
        deny all;
    }
}

方法四:使用 Prometheus + Nginx Exporter

  1. 安装 Nginx Exporter

    docker pull nginx/nginx-prometheus-exporter
    
  2. 运行 Exporter

    docker run -p 9113:9113 nginx/nginx-prometheus-exporter \
     -nginx.scrape-uri http://nginx-host:port/nginx_status
    
  3. 配置 Prometheus 抓取指标

状态数据解释

对于 stub_status 模块: - Active connections: 当前活跃连接数 - accepts: 已接受的客户端连接总数 - handled: 已处理的连接总数 - requests: 客户端请求总数 - Reading: 正在读取请求头的连接数 - Writing: 正在向客户端写入响应的连接数 - Waiting: 空闲客户端连接数

安全建议

  1. 限制访问权限,只允许特定IP访问状态页面
  2. 考虑使用基本认证
  3. 对于敏感环境,可以通过VPN访问

以上方法可以根据你的具体需求选择适合的方案来实现Nginx的状态统计。