云计算百科
云计算领域专业知识百科平台

服务器 Linux + Certbot + Nginx 配置 SSL 与自动续期指南

服务器 Linux + Certbot + Nginx 配置 SSL 与自动续期指南


这是一篇从 零开始、覆盖「工具安装 → 域名解析 → Nginx 配置 → SSL 申请 → 自动续期 → 验证机制 → 原理拆解 → 常见坑排查」的生产级实战教程。适用于 Ubuntu / Debian 系服务器。


一、为什么你需要 HTTPS?

在现代互联网环境中,HTTPS 已经不是“加分项”,而是基础设施:

  • 🔒 数据加密,防止中间人攻击
  • 🧩 浏览器信任标识(小锁)
  • 🚀 SEO 权重更高
  • 🛡️ API / 登录 / 支付接口必须 HTTPS

我们将使用:

Nginx + Let’s Encrypt + Certbot

这是一套:

  • 免费
  • 自动化
  • 被大规模生产环境验证的方案

二、整体架构图

浏览器
↓ HTTPS 443
公网域名 (yunyou.space)

云服务器公网 IP

Nginx

SSL证书 (Let's Encrypt)

静态页面 / 后端服务 / Docker容器

证书续期流程:

systemd timer

certbot renew

域名验证

证书更新

nginx reload


三、准备条件

1. 云服务器

  • Ubuntu 20.04 / 22.04(推荐)
  • 公网 IP
  • 可 SSH 登录

2. 域名

示例:

yunyou.space
www.yunyou.space
news.yunyou.space
map.yunyou.space
advert.yunyou.space

3. DNS解析

在你的域名服务商控制台中添加:

类型主机名值
A @ 你的公网IP
A www 你的公网IP
A news 你的公网IP
A map 你的公网IP
A advert 你的公网IP

验证:

dig www.yunyou.space


四、系统环境初始化

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装基础工具

sudo apt install -y curl wget git ufw


五、安装 Nginx

sudo apt install -y nginx

启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx

验证:

curl http://127.0.0.1

公网验证:

curl http://你的公网IP

浏览器访问:

http://你的公网IP

看到 Nginx 欢迎页说明成功


六、Nginx 目录结构理解

Nginx 主配置不会直接写站点:

/etc/nginx/nginx.conf

它加载:

include /etc/nginx/sites-enabled/*;

真正的网站配置在:

/etc/nginx/sites-available/
/etc/nginx/sites-enabled/

规则:

sites-enabled 是 sites-available 的软链接


七、创建你的网站配置

1. 创建站点文件

sudo nano /etc/nginx/sites-available/yunyou

2. 写入配置

server {
listen 80;
server_name
yunyou.space
www.yunyou.space
news.yunyou.space
map.yunyou.space
advert.yunyou.space;

root /var/www/yunyou;
index index.html;

location / {
try_files $uri $uri/ =404;
}
}

3. 启用站点

sudo ln -s /etc/nginx/sites-available/yunyou /etc/nginx/sites-enabled/

4. 创建网站目录

sudo mkdir -p /var/www/yunyou
sudo nano /var/www/yunyou/index.html

写入:

<h1>Hello World from yunyou.space</h1>

5. 重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

浏览器访问:

http://www.yunyou.space


八、防火墙检查

Ubuntu 默认用 UFW:

sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

必须开放:

  • 80
  • 443

九、安装 Certbot

推荐 Snap 方式

sudo snap install core
sudo snap refresh core
sudo snap install –classic certbot

创建命令软链接:

sudo ln -s /snap/bin/certbot /usr/bin/certbot


十、申请 HTTPS 证书

一次性申请所有子域

sudo certbot –nginx \\
-d yunyou.space \\
-d www.yunyou.space \\
-d news.yunyou.space \\
-d map.yunyou.space \\
-d advert.yunyou.space

过程会问你:

  • 邮箱
  • 是否重定向 HTTP → HTTPS(选 2 推荐)

成功提示:

Congratulations!


十一、Certbot到底改了什么?

它自动帮你改了:

/etc/nginx/sites-enabled/yunyou

你会看到:

HTTP重定向块

server {
listen 80;
server_name yunyou.space www.yunyou.space news.yunyou.space map.yunyou.space advert.yunyou.space;
return 301 https://$host$request_uri;
}

HTTPS服务块

server {
listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/yunyou.space/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yunyou.space/privkey.pem;

root /var/www/yunyou;
index index.html;
}


十二、证书文件结构

ls /etc/letsencrypt/live/yunyou.space

你会看到:

cert.pem
chain.pem
fullchain.pem
privkey.pem

这些是软链接,真实文件在:

/etc/letsencrypt/archive/yunyou.space


十三、自动续期机制

Certbot 安装后会自动注册 systemd 定时器

查看:

systemctl list-timers | grep certbot

你会看到:

certbot.timer
snap.certbot.renew.timer

流程:

定时器触发
→ certbot renew
→ 验证域名
→ 更新证书
→ nginx reload


十四、手动测试续期

sudo certbot renew –dry-run

成功输出:

Congratulations, all renewals succeeded


十五、验证 HTTPS

浏览器

访问:

https://www.yunyou.space

命令行

curl -I https://www.yunyou.space

你应该看到:

HTTP/2 200


十六、工作原理拆解

域名匹配机制

浏览器访问:

news.yunyou.space

Nginx 会:

  • 接收请求
  • 读取 Host Header
  • 匹配 server_name
  • 找到对应 server 块
  • 返回页面
  • Certbot工作原理

    它本质是:

    Nginx 配置解析器 + SSL配置生成器

    执行流程:

    扫描Nginx配置
    → 找server_name
    → 插入SSL配置
    → 写回文件
    → nginx -t
    → reload


    十七、多服务架构扩展

    如果你后面使用 Docker / 微服务:

    结构推荐:

    Nginx (443)
    ├─ news → localhost:1997
    ├─ map → localhost:1996
    ├─ advert → localhost:1998

    示例反向代理:

    location / {
    proxy_pass http://127.0.0.1:1997;
    }


    十八、常见问题

    Q1: 公网能访问IP,域名访问不了

    → DNS没生效

    Q2: HTTPS报证书错误

    → 域名和证书不匹配

    Q3: 续期失败

    → 80端口被防火墙封了


    十九、生产建议

    • 启用 HTTP/2
    • 添加安全头
    • 启用 OCSP Stapling
    • 配合 Docker / K8s

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 服务器 Linux + Certbot + Nginx 配置 SSL 与自动续期指南
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!