域名已经解析到服务器,不代表 HTTPS 就会自动生效。
绝大多数 HTTPS 失败,根因其实就 4 个:证书没签下来、443 没打通、Nginx 没正确加载证书、CDN/Cloudflare 模式配错。
一、先别查配置,先确认"证书到底有没有签成功"
如果你用 Let's Encrypt 或 Certbot,第一步先看证书状态。
certbot certificates
再顺手确认 80 和 443 端口情况:
ss -ltnp | grep -E '80|443'
如果没有有效证书,后面配再多 Nginx 也没用。
二、证书有了,但 443 没监听,HTTPS 还是起不来
HTTPS 本质上就是服务端要在 443 端口 提供 TLS。
如果 Nginx 没监听 443,或者云安全组 / 本机防火墙没放行 443,浏览器照样打不开 HTTPS。
先查:
ss -ltnp | grep 443
再测域名:
curl -I https://你的域名
如果 443 根本没在监听,问题就不是"证书不生效",而是"HTTPS 服务没起来"。
三、Nginx 最常见的坑:证书路径对了一个,错了一个
Nginx 要真正启用 HTTPS,核心不是"装了证书",而是 443 的 server 块 里必须正确加载:
ssl_certificatessl_certificate_key
最小检查动作:
nginx -t
grep -R "ssl_certificate|ssl_certificate_key|listen 443" /etc/nginx
一个标准的 HTTPS 配置示例如下:
server {
listen 443 ssl;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
改完后别忘了:
systemctl reload nginx
很多人 HTTPS 不生效,不是没证书,而是:
- 443 的 server 块没写
- 证书路径写错
- 证书和私钥不匹配
- 改完没 reload
四、用了 Cloudflare,浏览器是 HTTPS,不代表源站就是 HTTPS
这是最容易误判的地方。
如果你开了 Cloudflare,浏览器到 Cloudflare 这一段可以是 HTTPS,但 Cloudflare 到你的源站 这一段,是否真的是 HTTPS,要看你选的 SSL/TLS 模式。
如果源站证书没配好,或者模式选错,就会出现:
- 浏览器证书异常
- 525 / 526 报错
- HTTPS 看起来开了,但实际访问异常
如果你用了 Cloudflare,还要重点确认:
- SSL 模式是否正确
- 源站证书是否有效
- 443 是否已放行
- Nginx 是否真的加载了证书
最快的排查顺序
按这个顺序查,别乱。
1. 先看证书有没有签下来
certbot certificates
2. 再看 80 / 443 端口是否正常
ss -ltnp | grep -E '80|443'
3. 再看 Nginx 是否真的加载了 HTTPS 配置
nginx -t
4. 如果用了 Cloudflare,再看 SSL 模式是否配错
重点排查:
- Flexible
- Full
- Full (strict)
以及源站证书是否和当前模式匹配。
一句话总结
域名解析正常,只能证明"路找到了服务器";HTTPS 生效,还得证明"证书有效、443 打通、Nginx 正确加载、代理层没配错"。
问题求助
没能解决你的问题?直接问我
如果你遇到任何技术问题无法解决,可以在这里提交求助。我会尽快查看并回复你。
支持作者
如果这篇文章帮到了你,可以支持我
扫码打赏,支持我持续更新原创排障文章。

