在 Debian 上监控 Nginx + SSL 通常分为几个层面:服务可用性、SSL 证书有效期、HTTPS 访问质量、性能与日志。下面给你一套实用方案,从“简单”到“专业”。
systemctl status nginx
systemctl enable nginx
echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
#!/bin/bash
DOMAIN="yourdomain.com"
EXP=$(echo | openssl s_client -servername $DOMAIN -connect $DOMAIN:443 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
EXP_EPOCH=$(date -d "$EXP" +%s)
NOW=$(date +%s)
DAYS=$(( (EXP_EPOCH - NOW) / 86400 ))
if [ $DAYS -lt 15 ]; then
echo "SSL 即将过期: $DAYS 天" | mail -s "SSL Alert" admin@yourdomain.com
fi
加入 cron:
crontab -e
0 8 * * * /root/check_ssl.sh
stub_status编辑 /etc/nginx/conf.d/status.conf:
server {
listen 127.0.0.1:8080;
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
}
}
重载:
nginx -t && systemctl reload nginx
访问:
curl http://127.0.0.1:8080/nginx_status
可看到:
apt install prometheus-nginx-exporter
location /metrics {
stub_status on;
}
- job_name: nginx
static_configs:
- targets: ['localhost:9113']
9628(Nginx Dashboard)✅ 可监控:
ssl_exporter(Prometheus)apt install prometheus-ssl-exporter
可监控:
tail -f /var/log/nginx/error.log
grep " 500 " /var/log/nginx/access.log | wc -l
支持:
| 场景 | 方案 |
|---|---|
| 个人/小站 | cron + 邮件 |
| 企业 | Prometheus + Grafana |
| 懒人 | UptimeRobot |
| 安全优先 | ssl_exporter |
如果你愿意,我可以:
你现在是 个人服务器还是生产环境?