要让Nginx运行状态监测真实反映HTTPS服务健康状况,必须将/status接口部署在listen 443 ssl的server块中,并启用--with-http_ssl_module和--with-http_stub_status_module模块,确保统计TLS握手、加密连接等核心安全指标。
要让 Nginx 的运行状态监测真实反映 HTTPS 服务的健康状况,关键在于把 /status 接口部署在启用 SSL 的 server 块中,并做好访问控制——它不是加个路径就行,而是必须跑在 listen 443 ssl 的上下文里,才能统计 TLS 握手、加密连接等核心安全指标。
Nginx 必须同时编译进两个模块:--with-http_ssl_module(支持 HTTPS)和 --with-http_stub_status_module(提供状态页)。执行以下命令验证:
nginx -V 2>&1 | grep -E "(ssl|stub_status)"若输出中缺失任一模块,需重新编译安装。例如:
yum install openssl-devel
apt install libssl-dev
./configure --with-http_ssl_module --with-http_stub_status_module
不能只配在 HTTP 的 80 端口下——那样统计的是明文流量,无法体现证书校验、TLS 版本协商、SNI 分发等安全行为。必须写在启用 SSL 的 server 块内:
ssl_certificate 和 ssl_certificate_key
location /status { stub_status on; access_log off; allow 127.0.0.1; allow 192.168.10.0/24; deny all;}
注意:stub_status on 必须写在 location 内;access_log off 防止高频采集刷爆日志;allow/deny 规则不可省略,严禁直接暴露给公网。
配置完成后重载 Nginx:nginx -s reload,然后通过 HTTPS 访问状态页:
curl -k https://localhost/status(-k 忽略证书校验)https://your-domain.com/status(需域名解析到该服务器)返回内容类似:
Active connections: 3server accepts handled requests 12345 12345 67890Reading: 0 Writing: 1 Waiting: 2
其中 Active connections 是当前加密连接总数,accepts/handled/requests 反映了 HTTPS 连接建立成功率与请求处理量。
状态页是纯文本格式,天然适配 Prometheus 等工具采集:
nginx-exporter 或自定义 exporter 抓取 /status 页面nginx_connections_active、nginx_requests_total
$ssl_protocol、$ssl_cipher)可进一步分析加密质量不复杂但容易忽略:只有 HTTPS server 块里的 status,才真正代表你线上加密服务的实时负载与连接健康度。