核心是获取可信SSL证书并正确配置Nginx监听443端口:可选免费Let’s Encrypt(certbot自动部署)或腾讯云/阿里云DV证书;证书须存于/etc/nginx/ssl/并设644/600权限;Nginx配置需用listen 443 ssl、指定pem/key路径、启用TLSv1.2+及强加密套件,并新增80端口server块return 301跳转HTTPS。

把网站从HTTP全面升级到HTTPS,核心就两件事:拿到可信的SSL证书,再让Nginx正确加载并响应443端口。整个过程不依赖商业付费(免费证书完全可用),也不需要改代码,关键是路径、权限和配置项不能出错。
申请免费SSL证书(推荐Let’s Encrypt或云厂商)
个人或小项目首选Let’s Encrypt,自动续期、零成本;国内用户用腾讯云、阿里云的免费DV证书更省心,审核快、界面直观。
- Let’s Encrypt:安装certbot后执行
sudo certbot --nginx,它会自动完成验证、申请、写入证书,并修改Nginx配置 - 腾讯云/阿里云:进入SSL证书控制台 → 选择“免费型DV SSL” → 填写域名 → DNS解析验证(添加一条TXT记录)→ 几分钟内签发成功
- 下载时选“Nginx”类型,你会得到两个文件:.pem(或.crt)是证书,.key是私钥;部分厂商还提供.ca-bundle,需合并进.pem或单独配置
ssl_trusted_certificate
上传并规范存放证书文件
别直接丢在/home或/tmp下——Nginx主进程通常以root运行,但worker进程可能降权,路径不可写或权限不足会导致启动失败。
- 推荐统一存放在
/etc/nginx/ssl/,例如:/etc/nginx/ssl/example.com.pem/etc/nginx/ssl/example.com.key - 设置权限:证书文件644,私钥必须600(仅属主可读)
sudo chmod 644 /etc/nginx/ssl/*.pemsudo chmod 600 /etc/nginx/ssl/*.key - 确认Nginx用户(通常是
www-data或nginx)能读取这两个文件
Nginx HTTPS服务块配置要点
一个干净、安全的HTTPS server块至少包含监听、域名、证书路径和基础TLS策略,缺一不可。
- 监听必须写成
listen 443 ssl;(不是listen 443; ssl on;,后者已过时且易漏配) -
ssl_certificate指向.pem文件(含证书+中间链),ssl_certificate_key指向.key文件 - 强制启用现代协议与强加密:
ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; - 加上
ssl_prefer_server_ciphers off;(TLS 1.3下该指令无效,但兼容旧版本更稳妥)
HTTP自动跳转HTTPS与常见排错
只配HTTPS不配跳转,用户仍可能通过http://访问,既不安全也不利于SEO。同时,混合内容(HTTP资源)会导致浏览器标记“不安全”。
- 新增独立的80端口server块,用
return 301 https://$host$request_uri;实现全站重定向 - 检查网页源码:所有
、









