Nginx 配置 HTTPS 完整步骤:免费证书申请到强制跳转

Linux 运维 2026-08-14 6 浏览

没有 HTTPS 的网站,浏览器直接标"不安全",搜索引擎也会降低信任。现在配置 HTTPS 的成本几乎为零:Let's Encrypt 等机构提供免费证书,十分钟能配完。这篇按步骤讲。

第一步:申请免费证书

域名能解析到服务器后,用 certbot 一键申请(以 Nginx + CentOS 为例):

yum install -y certbot python3-certbot-nginx
certbot --nginx -d gdsxzx.com -d www.gdsxzx.com

certbot 会自动改 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、影响新浏览器功能的使用。趁早配上,一劳永逸。