Debian 上 Nginx 配置 SSL 失败的原因有很多,下面按最常见 → 较少见给你系统梳理一下,你可以对着排查。
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
检查:
ls -l /etc/nginx/ssl/
❌ 常见错误:
.pem 写成 .crtopenssl x509 -noout -modulus -in example.com.crt | openssl md5
openssl rsa -noout -modulus -in example.com.key | openssl md5
两个 md5 必须一致,否则 Nginx 起不来。
Nginx 默认用户:
www-data
错误示例:
-r-------- root root private.key
修复:
chmod 600 /etc/nginx/ssl/*
chown root:root /etc/nginx/ssl/*
⚠️ 私钥不能被其他用户读
测试配置:
nginx -t
常见错误:
;listen 443 ssl; 没写 sslserver_name 不对ls /etc/nginx/modules-enabled/
应有:
50-mod-http-ssl.conf
没有就:
ln -s /usr/share/nginx/modules-available/ngx_http_ssl_module.conf \
/etc/etc/nginx/modules-enabled/
(Debian 11+ 一般已默认启用)
检查:
which nginx
ps aux | grep nginx
ssl on;(旧版)listen 443 ssl;
新版不用 ssl on;
只放了 example.com.crt,没放中间证书
✅ 正确做法:
cat example.com.crt intermediate.crt > fullchain.crt
# 1. 检查配置
nginx -t
# 2. 看错误日志
journalctl -u nginx -e
# 或
tail -n 50 /var/log/nginx/error.log
# 3. 检查端口
ss -tlnp | grep 443
你可以贴出:
nginx -t 输出error.log 报错server 配置块我可以直接告诉你哪一行错了、怎么改。