一、为什么要开启 HTTPS 和 HTTP/2?
很多站长觉得 HTTPS 只是地址栏前面加个小锁,可有可无。其实这是误解——HTTPS 直接影响三件事:
SEO 排名:Google 早在 2014 年就将 HTTPS 列为排名因素,HTTP 站点在搜索结果中会被标注”不安全”,影响点击率。如果你在做 AdSense 变现,审核时 Google 也会检查这一项。
用户安全:HTTP 传输的数据(包括登录密码、Cookie)完全明文,在公共 WiFi 下极易被截获。HTTPS 全程加密,保护用户隐私。
HTTP/2 加速:HTTP/2 必须基于 HTTPS 才能启用。相比 HTTP/1.1,HTTP/2 支持多路复用(同一连接并行传输多个请求),实测可将页面加载速度提升 20–40%。
二、申请阿里云免费 SSL 证书
阿里云提供每年 20 张免费 DV 证书,有效期 1 年,到期后可以重新申请续签。
登录阿里云控制台 → 搜索「SSL 证书」→ 点击「免费证书」→「创建证书」
证书绑定域名填写你的主域名,如 huangdi888.top。验证方式选「自动 DNS 验证」(域名在阿里云解析时最方便),或「手动 DNS 验证」。
提交后通常 5–10 分钟内签发。签发后点击「下载」→ 选择「Nginx」格式,会得到两个文件:*.pem(证书)和 *.key(私钥)。
三、上传证书到服务器
将下载的证书文件上传到服务器,建议统一放在 /etc/nginx/ssl/ 目录:
mkdir -p /etc/nginx/ssl/huangdi888.top
# 从本地上传(在本地终端执行)
scp huangdi888.top.pem root@你的服务器IP:/etc/nginx/ssl/huangdi888.top/
scp huangdi888.top.key root@你的服务器IP:/etc/nginx/ssl/huangdi888.top/
# 设置权限(私钥文件只允许 root 读取)
chmod 600 /etc/nginx/ssl/huangdi888.top/*.key
chmod 644 /etc/nginx/ssl/huangdi888.top/*.pem
也可以用宝塔面板、FTP 或阿里云控制台的「文件管理」上传,效果相同。
四、修改 Nginx 配置文件
打开 Nginx 主配置文件:
将原有的 server 块替换为以下完整配置:
server {
listen 80;
listen [::]:80;
server_name huangdi888.top www.huangdi888.top;
return 301 https://huangdi888.top$request_uri;
}
# HTTPS + HTTP/2 主配置
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name huangdi888.top;
# SSL 证书路径
ssl_certificate /etc/nginx/ssl/huangdi888.top/huangdi888.top.pem;
ssl_certificate_key /etc/nginx/ssl/huangdi888.top/huangdi888.top.key;
# SSL 安全配置(推荐)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
# HSTS(可选,开启后浏览器强制 HTTPS)
add_header Strict-Transport-Security “max-age=31536000” always;
# 网站根目录
root /usr/share/nginx/html/wordpress;
index index.php index.html index.htm;
# 静态文件直接返回(不走 WordPress)
location ~* ^/(ads\.txt|robots\.txt|sitemap\.xml)$ {
root /usr/share/nginx/html/wordpress;
try_files $uri =404;
}
# WordPress 主路由
location / {
root /usr/share/nginx/html/wordpress;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$args;
}
# PHP-FPM 处理
location ~ \.php$ {
root /usr/share/nginx/html/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
huangdi888.top.pem 和 huangdi888.top.key 替换为你实际下载的文件名,阿里云下载的文件名格式可能略有不同。
五、测试 + 重载 Nginx
修改配置后,先测试语法是否正确,再重载:
nginx -t
# 输出以下内容说明配置正确:
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
# 重载 Nginx(不中断现有连接)
systemctl reload nginx
reload 而不是 restart。reload 会优雅地重载配置,不会中断正在处理的请求。
六、验证 HTTPS 和 HTTP/2
用 curl 命令快速验证:
curl -I –http2 https://huangdi888.top
# 成功时响应头类似:
HTTP/2 200
server: nginx/1.20.1
strict-transport-security: max-age=31536000
# 验证 HTTP 是否自动跳转 HTTPS
curl -I http://huangdi888.top
# 应该返回 301 跳转:
HTTP/1.1 301 Moved Permanently
Location: https://huangdi888.top/
也可以在浏览器中直接访问 https://huangdi888.top,地址栏显示小锁图标,点开后可以看到「连接是安全的」和「协议:HTTP/2」。
七、常见报错与解决方案
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
| unknown directive “http2” | Nginx 版本过低(< 1.9.5) | 升级 Nginx 到 1.20+:yum install nginx |
| SSL_CTX_use_certificate: no start line | 证书文件路径错误或格式不对 | 检查 ssl_certificate 路径,确认文件存在且可读 |
| SSL_CTX_use_PrivateKey_file failed | 私钥与证书不匹配 | 重新下载证书,确保 .pem 和 .key 是同一套 |
| no “ssl_certificate” is defined | 443 端口 server 块缺少证书配置 | 确认 ssl_certificate 和 ssl_certificate_key 都已配置 |
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | ssl_protocols 配置了过时协议(如 TLSv1.0) | 改为 ssl_protocols TLSv1.2 TLSv1.3; |
| 浏览器仍显示 HTTP(无小锁) | CDN 或 EdgeOne 未开启 HTTPS | 在 EdgeOne 控制台开启「强制 HTTPS」和「HTTP/2」 |
总结
HTTPS 不是可选项,而是现代网站的基础设施。配置一次,受益长期。
完成以上步骤后,你的网站已经具备:全站 HTTPS 加密、HTTP 自动跳转、HTTP/2 多路复用加速、HSTS 安全头。
配合前文的 WordPress 速度优化插件 + EdgeOne CDN,网站的安全性和访问速度都会有质的提升,也更有利于 Google AdSense 审核通过。
如有配置问题,欢迎在评论区留言,附上 nginx -t 的报错信息,我来帮你排查。