服务器 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 会:
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
网硕互联帮助中心



评论前必须登录!
注册