Nginx 配置 HTTPS 与 Let’s Encrypt 证书自动续签教程

阅读:17 2025-07-22

本文来自「码农资讯网」,专注 DevOps、PHP、数据库、系统运维干货。访问:www.codesou.cn,学习更多实战技巧。


一、为什么启用 HTTPS?

开启 HTTPS(即使用 SSL/TLS)带来的好处包括:

  • 🔒 数据传输加密,防止中间人攻击

  • ✅ 提升搜索引擎排名(Google/Bing 优先展示 HTTPS 站点)

  • 🧾 提高用户信任度和品牌形象

  • 🛡️ 支持 HTTP/2,加快网站加载速度


二、准备工作

在开始之前,你需要:

  1. 一台公网服务器(如 CentOS、Ubuntu)

  2. 一个已解析到服务器 IP 的域名(如:www.codesou.cn

  3. 安装好 Nginx

  4. 安装 Certbot 工具(Let’s Encrypt 官方推荐的客户端)


三、安装 Certbot

Ubuntu/Debian 为例:

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

CentOS 用户:

sudo yum install epel-release -y
sudo yum install certbot python3-certbot-nginx -y

四、申请 SSL 证书并自动配置 Nginx

sudo certbot --nginx -d www.codesou.cn -d codesou.cn

解释:

  • --nginx 表示使用 Nginx 插件自动配置

  • -d 指定域名,可以多个

成功后,Certbot 会自动修改你的 Nginx 配置文件并添加 HTTPS 支持。


五、自动续签配置(Let’s Encrypt 证书有效期仅90天)

Certbot 默认会创建系统定时任务,但你也可以手动测试自动续签:

sudo certbot renew --dry-run

定时自动续签推荐配置如下(Ubuntu 默认已有 cronjob):

0 2 * * * /usr/bin/certbot renew --quiet

确保 Nginx 支持自动 reload:

--deploy-hook "systemctl reload nginx"

完整自动续签命令:

sudo certbot renew --quiet --deploy-hook "systemctl reload nginx"

六、手动配置 Nginx 支持 HTTPS(可选)

若你手动申请了证书,可这样配置 Nginx:

server {
    listen 443 ssl http2;
    server_name www.codesou.cn;

    ssl_certificate /etc/letsencrypt/live/www.codesou.cn/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.codesou.cn/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /www/wwwroot/codesou;
    index index.html index.php;
}

同时配置 HTTP 自动跳转到 HTTPS:

server {
    listen 80;
    server_name www.codesou.cn;
    return 301 https://$server_name$request_uri;
}

七、常见问题排查

问题解决方案
80 端口被占用停用 Apache 或其他服务
“Too many certificates already issued”检查是否频繁申请(限制:每周5次)
自动续签失败检查域名解析、定时任务是否正常



八、小结

  • 使用 Let’s Encrypt 免费申请证书是当前最主流方案

  • Certbot 可以自动安装证书并配置 Nginx

  • 建议强制 HTTPS 跳转并使用 HTTP/2 提升加载速度

  • 定期测试自动续签是否有效,避免证书过期


标签: Nginx
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!