摘要
Nginx配置HTTPS 已是 2026 年站长和开发者的必修课。本文带你从零搞定免费 SSL 证书申请、Nginx 极速安全部署与永久自动续期全流程!
一、引言:为什么你需要关注 2026 年的 HTTPS 配置?
在当今的互联网生态中,HTTPS 早已从"选配"变成了"强标配"。如果你的网站还在使用 HTTP,浏览器地址栏会直接弹窗警告"不安全",搜索引擎(如 Google、百度)也会对你的网站进行降权处理。
然而,进入 2026年 以后,免费 SSL 证书的申请与维护面临着空前的痛点:
- 免费证书有效期缩短至 3 个月 :自 2024 年起,阿里云、腾讯云等大厂以及 Let's Encrypt 的免费 DV 证书有效期,均已从 12 个月统一缩短至 90 天。这意味着你每年至少需要手动更新 4 次证书。
- 多域名维护噩梦 :云平台免费证书通常不支持泛域名(通配符) ,且每年有 20 张的额度限制。如果你手头有多个子域名(如
www,api,blog,admin),每 3 个月折腾一次手动替换,遗忘几乎是迟早的事。一旦证书过期,等待你的就是红色的拦截页面和业务的中断。
核心解决方案:使用 乐此云签实现"泛域名一键申请 + 命令行永久自动续期"。
本文将为你提供一份最全面、可直接复制的 Nginx配置HTTPS全流程指南,不仅包含最先进的 Nginx 安全与性能优化参数(如 TLS 1.3、HSTS、OCSP 装订),更带你一键配置自动续期,彻底解放双手!
二、第一步:零门槛获取免费 SSL 证书
在配置 Nginx 之前,我们需要先获得证书文件。这里我们推荐使用 乐此云签(letsssl.cn) 。它对 Let's Encrypt 的 ACME 协议进行了图形化包装,支持免费申请泛域名证书,且不限申请张数,支持一键生成自动续期脚本。
1. 证书申请流程
- 打开 乐此云签控制台,注册并登录账号。

-
点击 "申请证书" 。

-
填写你的域名信息:
-
单域名 :直接填入你的域名,如
example.com。 -
泛域名 :强烈建议勾选 "泛域名,包含根域" ,填入
example.com。系统会同时保护*.example.com和example.com,即一张证书搞定所有子域名!
-
-
点击 "提交申请,提交证书申请。
2. 轻松搞定域名验证(CNAME 验证)
为了证明你对域名的所有权,证书颁发机构(CA)需要进行安全验证。乐此云签提供了极为简便的 CNAME 验证方式:
-
申请提交后,系统会生成一条 记录类型为 CNAME 的验证解析信息,包含
主机记录和记录值。
-
前往你的域名解析控制台(以阿里云为例):
- 点击 添加记录。
- 选择 记录类型 为
CNAME。 - 填入乐此云签提供的
主机记录和记录值。 - TTL 选择默认(通常为 600 或 10 分钟)。

-
保存解析记录后,回到乐此云签页面,点击 "立即验证"。

注意:DNS 解析生效通常需要几分钟,个别情况可能需要更长时间。如果验证失败,等待 2-3 分钟后重试即可。
-
验证通过后,系统会在 1-2 分钟内完成签发。点击 "下载" 按钮,选择 Nginx (PEM) 格式下载。

解压下载的压缩包,你会得到两个核心文件:
xxx_certificate.pem:你的公钥证书(包含证书链)。xxx_private.key:你的私钥文件(必须严格保密)。
三、第二步:Nginx HTTPS 基础配置与部署
拿到证书后,我们需要将其部署到 Linux 服务器上,并修改 Nginx 的配置文件。
1. 安全规范:上传并保护证书文件
请勿将私钥文件随意乱放。按照 Linux 安全规范,我们应该将其存放在 Nginx 的专用安全目录中,并严格限制文件访问权限:
bash
# 1. 创建 Nginx 专属的 SSL 证书存放目录
sudo mkdir -p /etc/nginx/ssl
# 2. 将解压出来的证书文件(.pem)和私钥文件(.key)上传或移动到该目录下
sudo mv yourdomain_certificate.pem /etc/nginx/ssl/
sudo mv yourdomain_private.key /etc/nginx/ssl/
# 3. 严格限制文件权限,仅 root 用户可读写私钥,防止被服务器上其他恶意进程窃取
sudo chmod 700 /etc/nginx/ssl
sudo chmod 600 /etc/nginx/ssl/yourdomain_private.key
sudo chmod 644 /etc/nginx/ssl/yourdomain_certificate.pem
sudo chown -R root:root /etc/nginx/ssl
2. 实战编写:Nginx HTTPS 基础配置文件
我们在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 下为你的网站新建一个配置文件,例如 example.com.conf。
下面是一份开箱即用、完全标准化的 Nginx HTTPS 配置文件。它不仅包含了 80 端口自动重定向到 443 的规则,还兼容了 Let's Encrypt 的 HTTP 验证路径,避免重定向导致验证失败:
nginx
# ==========================================
# 1. HTTP 80 端口配置(强制重定向至 HTTPS)
# ==========================================
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
# 兼容性设置:放行 Let's Encrypt 的 HTTP 验证路径(ACME Challenge)
# 确保自动续期时的 HTTP 验证请求不被 301 重定向拦截,提高验证成功率
location ^~ /.well-known/acme-challenge/ {
root /var/www/html;
try_files $uri =404;
}
# 将所有其他 HTTP 流量 301 永久重定向到对应的 HTTPS 地址
location / {
return 301 https://$host$request_uri;
}
}
# ==========================================
# 2. HTTPS 443 端口配置
# ==========================================
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com www.example.com;
# 网站根目录及默认索引文件
root /var/www/html;
index index.html index.htm;
# 证书文件路径配置
ssl_certificate /etc/nginx/ssl/yourdomain_certificate.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain_private.key;
# 基础安全套件:仅启用安全的 TLS v1.2 和 TLS v1.3,彻底禁用不安全的 SSLv3, TLSv1.0, TLSv1.1
ssl_protocols TLSv1.2 TLSv1.3;
# 推荐的高强度加密套件(优先采用支持前向安全 PFS 的算法)
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;
# 业务请求路由配置
location / {
try_files $uri $uri/ =404;
}
# 开启静态资源强缓存,提升 HTTPS 页面加载速度
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 1y;
add_header Cache-Control "public, no-transform, immutable";
access_log off;
}
}
编写完成后,执行以下命令验证并生效:
bash
# 测试 Nginx 配置文件语法是否正确
sudo nginx -t
# 如果提示 syntax is ok, test is successful,则平滑重启 Nginx
sudo systemctl reload nginx
四、第三步:HTTPS 高性能与高安全优化(运维进阶)
仅仅配通 443 端口是不够的。HTTPS 引入的 SSL/TLS 握手阶段会增加多次网络往返(RTT),并对服务器 CPU 带来一定的加解密算力消耗。
通过以下三项高级配置,我们可以将网站的安全评级提升至 SSL Labs A+,并大幅提升页面加载速度。
1. 启用 HTTP/2 协议(大幅减少请求延迟)
HTTP/2 支持多路复用,允许在单条 TCP 连接上并发发送多个请求,消除了 HTTP/1.1 的线头阻塞问题。在 Nginx 中启用非常简单:
在 Nginx 1.25.1 之前,配置为:
nginx
listen 443 ssl http2;
自 Nginx 1.25.1+ 起,Nginx 废弃了在该指令中连写的写法,推荐改用独立的 http2 指令:
nginx
listen 443 ssl;
http2 on; # 启用 HTTP/2 协议
2. 启用 HSTS(强制客户端浏览器使用 HTTPS)
HSTS(HTTP Strict Transport Security)可以通过响应头告知浏览器:在接下来的指定时间内,任何针对该域名的 HTTP 请求,都必须在浏览器内部强制转换为 HTTPS 请求再发出。这能完美防范降级攻击(SSL Stripping)。
在 HTTPS 的 server 块中加入:
nginx
# 强制浏览器在未来 1 年内(31536000秒)对该域名全部使用 HTTPS 访问,包含子域名
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
3. 配置 OCSP 装订(OCSP Stapling)
OCSP(在线证书状态协议) 的作用是让浏览器在握手时去 CA 服务器查询"当前证书有没有被吊销"。默认情况下,浏览器会在握手时实时发送请求给 CA,如果 CA 服务器延迟较高,就会明显拖慢网站的首次白屏时间。
OCSP 装订(OCSP Stapling) 则是让 Nginx 服务器在后台定期去 CA 拉取好证书状态,缓存在服务器本地。当浏览器发起连接时,Nginx 直接把这个带签名的状态"装订"在证书里发给浏览器,浏览器无需再去请求 CA,直接省去一次网络往返,握手速度飞起!
在 HTTPS 的 server 块中添加:
nginx
# 开启 OCSP 装订,由 Nginx 代替浏览器去向 CA 查询证书状态
ssl_stapling on;
ssl_stapling_verify on;
# 指定可信的 DNS 解析服务器,用于解析 CA 的 OCSP 域名
resolver 8.8.8.8 1.1.1.1 valid=300s;
resolver_timeout 5s;
4. 优化 SSL 会话缓存(降低 CPU 开销)
为了避免每次客户端请求都进行完整的 SSL 握手,我们需要配置会话缓存和会话凭证,实现会话复用(Session Resumption):
nginx
# 配置 SSL 共享会话缓存,大小为 10MB(大约可缓存 40000 个会话)
ssl_session_cache shared:SSL:10m;
# 会话超时时间设为 1 天,增加复用几率,减轻 CPU 握手开销
ssl_session_timeout 1d;
# 禁用 session tickets,防止因主密钥泄露导致历史通信流量被破解(完美前向安全)
ssl_session_tickets off;
五、第四步:一键配置自动续期,告别证书过期尴尬
前文提到,2026 年的免费 SSL 证书有效期仅有 90 天,手动替换繁琐且极易遗漏。
乐此云签 提供了一套完美的轻量化自动续期方案。平台会在证书到期前 30天内 自动向 Let's Encrypt 重新发起签发申请,并提供专属的部署脚本。
我们只需要将生成的脚本一次性配置在 Linux 服务器的 cron 定时任务中,脚本每 15 天会自动检查一次证书状态,一旦发现新证书,便会自动下载、覆盖旧证书并重载 Nginx,全程零人工干预!
1. Linux + Nginx 自动续期实战
-
登录乐此云签控制台,在你的证书列表中,点击对应证书的 "自动续期" 按钮。

-
填写自动续期参数:
- 服务器类型 :选择
Nginx。 - 证书存放路径 :
/etc/nginx/ssl/yourdomain_certificate.pem。 - 私钥存放路径 :
/etc/nginx/ssl/yourdomain_private.key。 - 重载命令 :
systemctl reload nginx(或者nginx -s reload)。

- 服务器类型 :选择
-
点击生成后,平台会为您生成一条专属的 一键部署命令。
-
在 Linux 服务器上,以 root 用户权限 打开终端,直接粘贴并执行该命令:
bash
# 乐此云签自动续期命令示例
curl -o /usr/bin/letsencrypt-renew https://letsssl.cn/download/letsencrypt-renew
chmod +x /usr/bin/letsencrypt-renew
crontab -l > /etc/crontab && echo '30 2 10,25 * * root /usr/bin/letsencrypt-renew -token=你的Token -key_path=/etc/nginx/ssl/yourdomain_private.key -server_type=nginx -cert_path=/etc/nginx/ssl/yourdomain_certificate.pem -command="systemctl reload nginx" -backup=true ' >> /etc/crontab
crontab /etc/crontab
/usr/bin/letsencrypt-renew -token=你的Token -key_path=/etc/nginx/ssl/yourdomain_private.key -server_type=nginx -cert_path=/etc/nginx/ssl/yourdomain_certificate.pem -command="systemctl reload nginx" -backup=true
原理说人话:
- 第一行使用
curl下载乐此云签专用的轻量级续期工具letsencrypt-renew,并赋予可执行权限。 - 第二行将一条定时任务写入系统的
crontab(每月 10 号和 25 号的凌晨 2:30 执行)。 - 第三行会立即执行一次该续期脚本,用于验证当前 Token、路径权限及 Nginx 重载命令是否完全正确。
-backup=true参数表示在更新证书前,会自动将旧证书进行备份(命名为.backup_年月日),万一更新过程网络异常,可以瞬间回滚,绝对保证业务高可用!
六、常见错误与故障排查(QA速查手册)
在配置 Nginx HTTPS 的过程中,我们整理了站长们最常遇到的 4 个经典报错及解决方案:
Q1:配置 HTTPS 后,通过浏览器访问网站一直处于加载状态,最终提示"连接超时"?
- 根本原因:你的服务器 443 端口未开放。
- 解决方案 :
- 检查云服务器安全组/网络ACL :登录阿里云/腾讯云控制台,在安全组入站规则中,确保放行了 TCP
443端口。 - 检查系统防火墙 :如果你开启了系统防火墙,需要手动放行:
- Ubuntu (UFW) :
sudo ufw allow 443/tcp && sudo ufw reload - CentOS (Firewalld) :
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent && sudo firewall-cmd --reload
- Ubuntu (UFW) :
- 检查云服务器安全组/网络ACL :登录阿里云/腾讯云控制台,在安全组入站规则中,确保放行了 TCP
Q2:Nginx 启动或重载报错:diretive ssl_certificate is not allowed here?
- 根本原因:你把 SSL 配置指令放到了错误的位置。
- 解决方案 :Nginx 的
ssl_certificate和ssl_certificate_key指令只能 放置在server块内,不能直接放在http块的最外层(除非作为全局默认值配置且符合上下文)。请检查你的配置文件括号是否闭合正确。
Q3:配置 HTTPS 后,网页能够访问,但地址栏小锁图标有黄色感叹号,提示"混合内容(Mixed Content)"?
- 根本原因 :你的 HTML 网页中硬编码引入了
http://协议的外部静态资源(如图片、JS、CSS 链接)。 - 解决方案 :
-
尽量将资源链接改为相对路径,或者将
http://替换为https://。 -
在 Nginx 的 HTTPS 响应头中加入安全指令,强制浏览器将所有的 HTTP 请求在前端无缝升级为 HTTPS,一键消除感叹号:
nginxadd_header Content-Security-Policy "upgrade-insecure-requests";
-
Q4:定时任务续期失败,日志中显示 permission denied 或 nginx command not found?
- 根本原因 :定时任务
cron默认的执行环境变量与登录终端不同,可能找不到全局的nginx路径;或者定时任务未使用root权限运行。 - 解决方案 :
- 确保在
crontab中配置的任务使用的是root账户,或者配置重载命令时使用 Nginx 的绝对路径,例如将-command="nginx -s reload"改为绝对路径-command="/usr/sbin/nginx -s reload"。 - 检查你配置的本地证书保存路径是否存在,且当前运行脚本的账户拥有写权限。
- 确保在
七、2026年 Nginx HTTPS 配置安全合规自查表
在你的网站正式上线前,请对照以下 Checklist 完成最后一步核对,确保安全防线无懈可击:
- 80 端口自动跳转 :已配置并生效(访问
http协议自动 301 跳转至https)。 - ACME 路径放行 :80 端口配置中已加入对
/.well-known/acme-challenge/路径的放行,确保证书自动续期顺畅。 - 高强度协议套件:已禁用 TLS 1.0 和 TLS 1.1,仅放行 TLS 1.2 & TLS 1.3。
- 私钥权限受控 :证书私钥文件(.key)的权限已设为最高级别的
600,且所有者为root。 - HSTS 强制保护 :已配置
Strict-Transport-Security头。 - OCSP 装订提速 :已成功开启
ssl_stapling且解析 DNS 正常工作。 - 自动续期测试成功 :手动运行续期脚本,日志显示
success,定时计划任务已成功注入系统的crontab。
八、总结
通过本文的实战,我们实现了 Nginx配置HTTPS 的终极目标:用最安全的姿势、最快的速度,实现终身免费且高可用的全自动托管。
在 90 天证书有效期成为行业铁律的今天,利用 乐此云签 (letsssl.cn) 图形化平台一键申请,配合本地轻量级自动续期脚本,是目前站长和企业开发者最具性价比、最省时省力的 HTTPS 方案。花上 10 分钟配置一次,你的网站便将永久被绿色安全锁守护,彻底告别过期尴尬!
相关阅读推荐:
- 2026年免费SSL证书申请全攻略:5种方案对比 --- 盘点行业免费方案,乐此云签一站式推荐
- Let's Encrypt证书有效期缩短至90天后,如何实现自动续期 --- 三大续期流派深度对比,助你选型不迷路
- Let's Encrypt 泛域名证书申请与自动续期完全指南 --- 了解通配符泛域名证书的巨大价值及域名 DNS 解析验证实操