CentOS 上 Nginx SSL 配置常见问题解答
一 快速自检清单
二 常见报错与修复
报错:nginx: [emerg] the “ssl” parameter requires ngx_http_ssl_module
原因:Nginx 未编译进 SSL 模块。
修复:进入 Nginx 源码目录,执行 ./configure --with-http_ssl_module(按需带上原有参数),make 后将新 objs/nginx 覆盖安装并重启。
报错:BIO_new_file() failed … No such file or directory
原因:证书路径错误或文件不存在。
修复:核对 ssl_certificate/ssl_certificate_key 路径,优先使用相对路径(如 cert/domain.pem),并确认文件已上传且权限正确。
访问 https 出现 404
原因:HTTPS 的 443 端口没有配置根目录或反向代理。
修复:在 listen 443 ssl 的 server 块中正确设置 root 或 proxy_pass。
访问被拒绝或超时
原因:未放行 443 端口(云上需安全组,系统需 firewalld/iptables)。
修复:开放 443/tcp,并验证本机监听 netstat -tulpen | grep :443。
配置测试通过但浏览器报证书不受信任
原因:使用了 自签名证书 或证书链不完整。
修复:使用 Let’s Encrypt/ca-bundle 等可信 CA 证书,确保 fullchain 或 bundle 文件配置正确。
三 推荐配置示例
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /usr/local/nginx/conf/cert/yourdomain.crt;
ssl_certificate_key /usr/local/nginx/conf/cert/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:
ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:
DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:MozSSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
add_header Strict-Transport-Security "max-age=63072000" always;
location / {
root /usr/local/nginx/html;
index index.html index.htm;
}
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
四 进阶与运维建议