Nginx 配置 HTTPS 完整步骤:免费证书申请到强制跳转
没有 HTTPS 的网站,浏览器直接标"不安全",搜索引擎也会降低信任。现在配置 HTTPS 的成本几乎为零:Let's Encrypt 等机构提供免费证书,十分钟能配完。这篇按步骤讲。
第一步:申请免费证书
域名能解析到服务器后,用 certbot 一键申请(以 Nginx + CentOS 为例):
yum install -y certbot python3-certbot-nginx
certbot --nginx -d gdsxzx.com -d www.gdsxzx.comcertbot 会自动改 Nginx 配置并完成验证,成功后证书文件在这两个位置:
/etc/letsencrypt/live/gdsxzx.com/fullchain.pem
/etc/letsencrypt/live/gdsxzx.com/privkey.pem第二步:手动配置(不依赖 certbot 自动改)
在站点配置的 server 块里加上:
server {
listen 443 ssl;
server_name gdsxzx.com;
ssl_certificate /etc/letsencrypt/live/gdsxzx.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/gdsxzx.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
root /www/wwwroot/gdsxzx.com;
index index.php index.html;
# ... 其余站点配置
}改完检查语法并重载:
nginx -t
nginx -s reload第三步:HTTP 强制跳转 HTTPS
让所有 http 访问都跳到 https,加一个 80 端口的 server:
server {
listen 80;
server_name gdsxzx.com www.gdsxzx.com;
return 301 https://$host$request_uri;
}301 跳转对 SEO 友好,权重会原样传递到 https 地址。
第四步:证书自动续期
Let's Encrypt 证书有效期 90 天,需要自动续期。certbot 装好时一般自带 systemd 定时器,验证一下:
systemctl list-timers | grep certbot没看到就自己加一条 crontab:
0 3 * * * certbot renew --quiet --renew-hook "nginx -s reload"验证配置是否成功
用浏览器访问 https 地址确认锁图标正常;再到站长平台(如百度搜索资源平台)提交 https 版本站点地图,让搜索引擎尽快收录新地址。别忘了把站点内所有绝对链接里的 http 改成 https,否则页面里还混着不安全的资源请求。
HTTPS 不是可选项了:影响用户信任、影响 SEO、影响新浏览器功能的使用。趁早配上,一劳永逸。