nginx https 测试 及status模块

本文介绍了如何在 CentOS 6.3 系统中配置 Nginx 服务器并启用 HTTPS 协议。主要内容包括生成 SSL 证书、配置 Nginx 的 SSL 模块以支持 HTTPS,以及如何使证书被浏览器信任。

./configure --with-http_stub_status_module  --with-http_ssl_module 

Cent OS 6.3 NGINX+

http://wenku.baidu.com/link?url=nLlPH33XQR_9gruGF0ki2EKlG9dz45jguN8OCXHIpeu1jdY4F_nZ1hJLWDMarD8WgjTf00JbC2n1yNKWmAkZuCndHdRcEbQzofn6-Uj2ABK

生成证书

$ cd /usr/local/nginx/conf
$ openssl genrsa -des3 -out server.key 1024
$ openssl req -new -key server.key -out server.csr
$ cp server.key server.key.org
$ openssl rsa -in server.key.org -out server.key
$ openssl x509 -req -days 365 -in server.csr -signkey server.key -outserver.crt

编辑 nginx.conf

server {
    server_name YOUR_DOMAINNAME_HERE;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.key;
}

OK, 完成了。但这样证书是不被信任的,自己玩玩还行,要被信任请看下面。

以下内容转载自
http://goo.gl/YOb5
http://goo.gl/Gftj

HTTPS(全称:Hypertext Transfer Protocol overSecure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容 请看SSL。

它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同 于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

1、自行颁发不受浏览器信任的SSL证书:
HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下:

openssl genrsa -des3 -out api.bz.key 1024
openssl  req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key  -out api.bz_nopass.key

nginx.conf 的SSL证书配置,使用api.bz_nopass.key,在启动Nginx是无需输入SSL证书密码,而使用api.bz.key则需要输入密码:

server {
server_name sms.api.bz;
listen  443;
index index.html index.htm index.php;
root  /data0/htdocs/api.bz;
ssl on;
ssl_certificate api.bz.crt;
ssl_certificate_key api.bz_nopass.key;
......
}


<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. 如何配置Nginx的stub_status模块以监控服务器状态? 2. 为什么访问stub_status状态页返回403 forbidden错误? 3. 除了stub_status,还有哪些Nginx监控方案? 4. 如何将stub_status的监控数据集成到Prometheus中? 5. Nginx的stub_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 性能告警?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值