nginx搭建a+级https博客需闭环落实四步:域名解析与端口开放、let’s encrypt自动签发及续期、精简安全的server配置(含tlsv1.2/1.3、hsts等响应头)、混合内容清零与ssllabs验证。

想用 Nginx 搭一个真正安全的 HTTPS 博客,A+ 不是玄学,而是可落地的配置组合。核心不在于堆参数,而在于每一步都闭环:域名能解析、证书能签发、Nginx 能正确加载并加固、浏览器能无警告访问。下面按真实上线顺序讲清楚。
域名与服务器准备:先让请求真正抵达你的 Nginx
域名必须完成 DNS 解析,且指向服务器公网 IP;服务器需开放 80 和 443 端口(云平台安全组 + 本地防火墙);Nginx 必须已安装并确认支持 SSL 模块(nginx -V | grep http_ssl_module 应有输出)。常见卡点:域名未备案(国内大陆服务器必须)、DNS 解析未生效(TTL 延迟)、安全组只放行了 22 端口却忘了 443。
建议操作:
- 用 dig yourdomain.com 或 nslookup yourdomain.com 验证 A 记录是否指向正确 IP
- 用 telnet yourdomain.com 443 测试端口连通性(不通则检查安全组和防火墙)
- 确保 Nginx 默认页能通过 http://yourdomain.com 正常打开,这是后续 HTTPS 的基础
证书申请:Let’s Encrypt + Certbot 是最稳路径
生产环境无需购买商业证书,Let’s Encrypt 免费、可信、自动化程度高。Certbot 能自动完成验证、申请、写入 Nginx 配置三件事。关键不是“能不能申请”,而是“能不能自动续期”——这才是长期安全的前提。
推荐命令(以 Ubuntu/Debian 为例):
- sudo apt install certbot python3-certbot-nginx
- sudo certbot --nginx -d blog.yourdomain.com(单域名)或 -d blog.yourdomain.com -d www.blog.yourdomain.com(多域名)
- 执行后 Certbot 会自动修改 Nginx 配置,添加证书路径和 443 监听
- 立即测试续期:sudo certbot renew --dry-run,成功即表示后续每月自动续期无忧
注意:若域名前有 CDN(如 Cloudflare),选 DNS-01 验证方式即可,无需暂停 CDN;HTTP-01 则要求源站 80 端口可被 Let’s Encrypt 服务器直接访问。
Nginx HTTPS 配置:一份精简但达 A+ 的 server 块
SSLLabs 评 A+ 的关键不在花哨套件,而在协议、头信息、会话管理三项扎实落地。以下配置已适配主流 OpenSSL 版本(截至 2026 年),可直接用于生产:
server {
listen 443 ssl http2;
server_name blog.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/blog.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
root /var/www/blog;
index index.html;
}
务必同步配置 HTTP 跳转:
server {
listen 80;
server_name blog.yourdomain.com;
return 301 https://$host$request_uri;
}
配置后运行 sudo nginx -t 校验语法,再 sudo systemctl reload nginx 生效。
安全收尾与验证:别让细节拖垮评级
A+ 不是配置完就自动拿到的,它依赖真实响应结果。常见失分点集中在混合内容、HSTS preload、以及响应头缺失。
- 检查页面所有资源(CSS、JS、图片、字体)是否都走 https://,任何 http:// 链接都会导致混合内容警告,SSLLabs 直接降级
- HSTS 中的 preload 参数需手动提交到 hstspreload.org 审核,审核通过后才计入 A+ 评分
- 用 curl -I https://blog.yourdomain.com 查看响应头,确认 Strict-Transport-Security、X-Frame-Options 等均已返回
- 最终用 SSLLabs SSL Test 输入域名,等待完整扫描(约 1–2 分钟),重点关注 “Handshake Simulation” 是否全部绿色,“Protocol Support” 是否无 TLS 1.0/1.1,“Key Exchange” 和 “Cipher Strength” 是否全为绿色











