nginx配置https最核心操作是在server块中监听443端口并正确指定证书路径,需确保证书路径绝对准确、权限设为600,启用tlsv1.2/tlsv1.3协议,配置301跳转http至https,并通过nginx -t验证后重载生效。

直接在 Nginx 的 server 块中启用 443 端口并指定证书路径,是最核心的操作。关键不在“有没有配”,而在于证书路径是否正确、协议与加密套件是否现代、HTTP 是否自动跳转 HTTPS。
准备正确的证书文件
确保你已获得两个必需文件:
-
证书文件(如
example.com.crt或fullchain.pem):包含域名证书和完整的中间证书链,缺一不可; -
私钥文件(如
example.com.key):权限必须设为600(仅属主可读写),防止泄露; - 不建议使用自签名证书上线,浏览器会显示“不安全”警告;生产环境优先选 Let’s Encrypt(免费)或 DigiCert/GlobalSign(OV/EV 类型)。
配置 HTTPS server 块
在站点配置文件(如 /etc/nginx/sites-available/example.com)中添加或修改如下内容:
-
listen 443 ssl;:明确启用 SSL 并监听标准 HTTPS 端口; -
server_name example.com;:必须与证书绑定的域名完全一致(含 www 或不含 www 需匹配); -
ssl_certificate /etc/nginx/ssl/example.com.crt;和ssl_certificate_key /etc/nginx/ssl/example.com.key;:路径要绝对准确,推荐用完整路径避免歧义; - 建议加上
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;(如有单独中间证书),提升兼容性; - 强制使用安全协议:
ssl_protocols TLSv1.2 TLSv1.3;,禁用 TLSv1.0/TLSv1.1; - 加密套件推荐精简强效组合,例如:
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384';
强制跳转 HTTPS(重要)
仅配 443 不够,用户仍可能通过 http 访问。新增一个纯 HTTP server 块做 301 重定向:
-
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }; - 若需同时支持 www 和非 www,可在两个 server_name 中都覆盖,或用 rewrite 统一规范;
- 避免写成
https://example.com$request_uri这类硬编码,否则带子域名时会出错。
验证与生效
每步完成后务必验证,不能跳过:
- 运行
sudo nginx -t检查语法,报错必须修正; - 确认防火墙和云服务器安全组已放行 443 端口(部分环境还需显式开启);
- 执行
sudo systemctl reload nginx(非 restart),平滑加载新配置; - 浏览器访问
https://example.com,查看地址栏锁图标,并点击检查证书有效期与颁发者。











