Nginx配置HTTPS的核心是配齐listen 443 ssl、ssl_certificate和ssl_certificate_key,路径准确且私钥权限为600;需另设80端口server块用return 301 https://$host$request_uri强制跳转,并建议启用TLSv1.2+、强加密套件及会话缓存。

基础 HTTPS Server 块写法
最简可用的 HTTPS 配置如下(假设证书文件已放在 /etc/nginx/ssl/ 目录下):
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
root /var/www/html;
index index.html;
}
}
必须同时配置 HTTP 跳转 HTTPS
只开 443 端口不够,用户直接输 http:// 会失败。建议加一个 80 端口 server 块做 301 跳转:
- 用
return 301 https://$host$request_uri;最简洁可靠 - 避免用
rewrite,易出循环或变量错误 - 确保该 server 块里 不写
ssl_*相关指令
证书路径和权限要注意
Nginx 工作进程(通常是 www-data 或 nginx 用户)需要读取证书私钥文件:
- 私钥文件(.key)权限建议设为
600:chmod 600 /etc/nginx/ssl/*.key - 证书文件(.crt 或 .pem)权限可设为
644 - 目录
/etc/nginx/ssl/权限建议755,且属主为 root - 若用 Let’s Encrypt,certbot 默认权限已处理好,但手动部署时需自查
推荐补充的安全相关配置
上线前建议加上这些提升兼容性与安全性:
-
ssl_protocols TLSv1.2 TLSv1.3;(禁用不安全的旧协议) -
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;(选强 cipher suite) -
ssl_prefer_server_ciphers off;(现代客户端自己选更优 cipher) -
ssl_session_cache shared:SSL:10m;和ssl_session_timeout 10m;(提升复用效率)
sudo nginx -t 测试语法,再 sudo systemctl reload nginx 生效。


















