【nginx】nginx开启stub_status模块配置方法

本文介绍如何通过安装和配置Nginx的stub_status模块来实现服务器的状态监控,包括安装模块、修改配置文件及重启服务等步骤。

参考:https://blog.youkuaiyun.com/ly_dengle/article/details/78792812

查看nginx时候有安装该模块。
/usr/local/nginx/sbin/nginx -V
注意是大写的V,小写的v是查看版本信息的

有这个模块,说明已加安装了。

2)安装stub_status模块
(注意:有的话可以忽略此步骤,就不用安装了)
nginx有一个统计功能模块,编译安装的时候加上参数 "--with-http_stub_status_module",就安装了这个模块。
命令如下:
 ./configure --with-http_stub_status_module


3)修改nginx配置文件
在server块下面加上如下配置:
#性能统计 add@2017-12-13
location /nginx_status{
stub_status  on;
access_log    off;
}


4)重启nginx
修改配置文件后,先检查配置文件语法是否正确,正确的话重启。
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload


5)在浏览器中输入 "域名/nginx_status" 就会显示nginx上次启动以来工作状态的统计的结果。
如下图:


6)返回各数据项说明:
Active connections: 当前nginx正在处理的活动连接数.
Server accepts handled requests request_time: nginx总共处理了13057 个连接,成功创建13057 握手(证明中间没有失败的),总共处理了11634 个请求,总共请求时间2230854。
Reading: nginx读取到客户端的Header信息数.
Writing: nginx返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中。

<think> 我们正在解决如何验证Nginx是否成功加载了stub_status模块的问题。根据之前的引用,我们知道stub_status模块Nginx中用于提供基本状态信息的模块。验证方法通常包括两种:查看Nginx编译配置信息和检查实际运行时的模块输出。 根据引用[1]、[2]、[3]、[4]、[5],我们可以总结出以下验证方法方法一:通过查看Nginx的版本信息,检查编译参数中是否包含`--with-http_stub_status_module`。 方法二:配置stub_status模块后,通过访问特定的状态页面来验证。 下面详细说明: ### 方法一:检查Nginx编译配置 执行以下命令查看Nginx的编译参数: ```bash nginx -V ``` 在输出信息中查找`--with-http_stub_status_module`,如果存在则说明编译时已经包含了该模块。 例如,引用[5]中显示的输出示例: ``` nginx version: nginx/1.12.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module ``` 这里明确列出了`--with-http_stub_status_module`。 ### 方法二:验证状态页输出 1. **配置Nginx**:在Nginx配置文件中(通常在`http`块下的某个`server`块中)添加以下配置: ```nginx server { listen 80; server_name localhost; location /nginx_status { stub_status on; # 开启stub_status access_log off; # 可选,关闭访问日志 allow 127.0.0.1; # 允许本机访问 deny all; # 禁止其他所有访问 } } ``` 2. **重载Nginx配置**: ```bash nginx -s reload ``` 3. **访问状态页**: 使用curl命令或浏览器访问配置的URL(如:`http://localhost/nginx_status`): ```bash curl http://localhost/nginx_status ``` 如果模块已加载,将返回类似以下的状态信息: ``` Active connections: 1 server accepts handled requests 10 10 20 Reading: 0 Writing: 1 Waiting: 0 ``` 如果返回404或其他错误,则说明配置可能有误或模块未加载。 注意:配置中的`location`路径(如`/nginx_status`)和访问控制(`allow`/`deny`)需要根据实际情况调整。 ### 总结 验证Nginx成功加载`stub_status`模块方法: 1. 使用`nginx -V`命令查看编译参数,确认包含`--with-http_stub_status_module`。 2. 配置并访问状态页,检查是否返回预期的状态信息。 如果两种方法都验证通过,则说明模块已成功加载。 根据以上内容,我们生成相关问题: §§相关问题§§ 1. 如何配置Nginxstub_status模块以监控服务器状态? 2. 为什么访问stub_status状态页返回403 forbidden错误? 3. 除了stub_status,还有哪些Nginx监控方案? 4. 如何将stub_status的监控数据集成到Prometheus中? 5. Nginxstub_status模块提供的监控数据指标分别代表什么含义? </think> ### 验证 Nginx 成功加载 `stub_status` 模块方法 #### ✅ 方法一:检查编译配置(无需重启) ```bash nginx -V 2>&1 | grep -o "http_stub_status_module" ``` - **验证结果**: - 若输出 `--with-http_stub_status_module` → 模块已编译(引用[1][2][5]) - 无输出 → 模块未编译 #### ✅ 方法二:检查运行时加载状态 ```bash # 查找 Nginx 主进程 ps -ef | grep nginx | grep master # 查看加载模块列表 nginx -T 2>&1 | grep "stub_status" ``` - **验证结果**: - 输出 `stub_status` → 模块已加载(引用[3][5]) - 无输出 → 模块未启用 #### ✅ 方法三:实际访问测试(需配置) 1. 添加配置(参考配置): ```nginx server { location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; # 安全限制 } } ``` 2. 重载服务: ```bash nginx -s reload ``` 3. 访问验证: ```bash curl http://localhost/nginx_status ``` **成功输出示例**: ``` Active connections: 3 server accepts handled requests 100 100 200 Reading: 0 Writing: 1 Waiting: 2 ``` (基于引用[2][5]的配置实践) --- ### 验证流程示意图 ```mermaid graph LR A[开始验证] --> B[检查编译参数] B -->|已编译| C[检查运行时模块] B -->|未编译| D[重新编译添加模块] C -->|已加载| E[配置状态页] D -->|编译安装| E E --> F[访问状态页] F -->|返回监控数据| G[验证成功] F -->|404/403错误| H[检查配置] ``` ### ⚠️ 常见问题排查 1. **403 Forbidden 错误**: - 检查 `allow/deny` 规则(需允许访问端IP) 2. **404 Not Found 错误**: - 确认 `location` 路径匹配请求URL 3. **空响应或无数据**: - 检查 Nginx 日志:`tail -f /var/log/nginx/error.log` - 确认配置在正确的 `server{}` 区块 > 通过上述方法可 100% 验证模块加载状态。推荐优先使用方法一快速验证编译状态(引用[1][3][5])。 --- ### 📌 相关问题 1. 如何在不重启 Nginx 的情况下添加 `stub_status` 模块? 2. 为什么配置了 `stub_status` 却返回 403 错误?如何解决? 3. 如何将 `stub_status` 的监控数据接入 Prometheus? 4. `stub_status` 输出的监控指标分别代表什么含义? 5. 除了 `stub_status`,还有哪些开源的 Nginx 监控方案? 6. 如何通过 `stub_status` 数据实现 Nginx 性能告警?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值