Nginx配置SSL开启HTTPS需三步:确认已编译http_ssl_module模块;将证书(如fullchain.pem)和私钥(.key,权限600)规范存于/etc/nginx/ssl/;在server块中监听443端口、指定证书路径、配置TLS协议与加密套件,并添加80端口重定向及HSTS头。

在 Nginx 中配置 SSL 证书开启 HTTPS,核心是三步:准备好证书文件、修改 server 块启用 443 端口并加载证书、强制 HTTP 跳转 HTTPS。只要证书有效、路径正确、模块已启用,配置本身并不复杂。
确认 Nginx 已编译支持 SSL 模块
Nginx 必须带有 http_ssl_module 才能处理 HTTPS 请求。运行以下命令检查:
nginx -V 2>&1 | grep -o with-http_ssl_module
若无输出,说明未启用 SSL 模块,需重新编译安装(添加 --with-http_ssl_module 参数)。大多数预装版本(如 Ubuntu 官方包、CentOS EPEL)默认已包含该模块。
准备好证书文件并规范存放
从 Let’s Encrypt、阿里云、腾讯云等平台下载的 Nginx 类型证书,通常包含两个必需文件:
- 证书文件:如 example.com.crt 或 fullchain.pem(推荐使用含中间证书的 fullchain,避免链不完整导致浏览器警告)
- 私钥文件:如 example.com.key(权限必须设为 600,即 chmod 600 /path/to/example.com.key)
建议统一存放在 /etc/nginx/ssl/ 目录下,例如:
/etc/nginx/ssl/example.com.pem(合并证书与中间链)
/etc/nginx/ssl/example.com.key
编辑站点配置启用 HTTPS
在对应站点的配置文件中(如 /etc/nginx/conf.d/example.com.conf),添加或修改一个 server 块:
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
注意:ssl_prefer_server_ciphers off 更符合现代安全实践;加密套件应避免使用已弃用算法(如 SHA1、RC4、TLSv1.0/1.1)。
强制跳转 HTTPS 并启用 HSTS(可选但推荐)
新增一个仅监听 80 端口的 server 块,实现自动重定向:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
在 HTTPS 的 server 块内加入 HSTS 头,提升安全性:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
配置完成后,务必执行:
nginx -t(检查语法)→ systemctl reload nginx(平滑重载)


















