.png)
Nginx 配置 HTTPS 证书流程
Nginx 配置 HTTPS 证书流程
本文档提供通过 Certbot 工具为 Nginx 配置 SSL/TLS 证书的完整流程,支持自动续期。
环境准备
-
服务器要求
- 已安装 Nginx 且服务正常运行
- 域名已解析到服务器 IP
- 防火墙开放 80(HTTP)和 443(HTTPS)端口
-
安装 Certbot
# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-nginx
# CentOS/RHEL
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx
生成 SSL 证书
# 自动获取证书并修改 Nginx 配置(推荐)
sudo certbot --nginx -d 你的域名 -d www.你的域名
# 仅生成证书(不修改配置)
sudo certbot certonly --nginx -d 你的域名
交互提示:输入邮箱、同意条款,选择是否将 HTTP 流量重定向到 HTTPS。
手动配置 Nginx
- 编辑配置文件(如
/etc/nginx/sites-available/your-site.conf
)
server {
listen 80;
server_name 你的域名 www.你的域名;
return 301 https://$host$request_uri; # HTTP 重定向到 HTTPS
}
server {
listen 443 ssl;
server_name 你的域名 www.你的域名;
ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
# 其他配置(如 root, index 等)
# ...
}
- 测试配置并重启 Nginx
sudo nginx -t # 检查语法
sudo systemctl reload nginx # 平滑重启
# 或
sudo systemctl restart nginx
证书自动续期
- 手动测试续期
sudo certbot renew --dry-run
- 添加定时任务
sudo crontab -e
添加以下行(每天 2:30 检查续期):
30 2 * * * /usr/bin/certbot renew --quiet
验证 HTTPS
- 浏览器访问:
https://你的域名
,确认地址栏显示 🔒 标识 - 命令行验证:
curl -I https://你的域名
故障排查
- 证书路径错误:确认
/etc/letsencrypt/live/你的域名/
存在证书文件 - 权限问题:确保 Nginx 用户(通常为
www-data
或nginx
)有读取权限 - 端口冲突:检查
netstat -tuln | grep ':443'
确认 443 端口未被占用
sudo journalctl -u nginx --since "5 minutes ago" # 查看 Nginx 日志
提示:证书到期前 Certbot 会自动续期,建议定期执行
sudo certbot renew --dry-run
验证自动续期功能。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 白芷舒华