在备份前,需先定位SSL证书及Nginx配置文件的存储路径,避免遗漏关键文件:
/etc/nginx/nginx.conf
(全局配置);/etc/nginx/sites-available/
(如default
或你的域名配置文件);.crt
格式(如your_domain.crt
),默认路径为/etc/ssl/certs/
或/etc/nginx/ssl/
;.key
格式(如your_domain.key
),默认路径为/etc/ssl/private/
或/etc/nginx/ssl/
;ca_bundle.crt
,与证书同目录。使用cp
命令复制Nginx主配置文件及虚拟主机配置文件(以default
为例):
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default.bak
若有多个虚拟主机配置,可批量复制整个sites-available
目录:
sudo cp -r /etc/nginx/sites-available/ /etc/nginx/sites-available.bak/
sudo cp /etc/ssl/certs/your_domain.crt /path/to/backup/ # 证书文件
sudo cp /etc/ssl/private/your_domain.key /path/to/backup/ # 私钥文件
sudo tar -czvf ssl_backup.tar.gz /etc/ssl/certs/ /etc/ssl/private/ # 打包为压缩文件
sudo rsync -avz /etc/ssl/certs/ /path/to/backup/ssl_certs/
sudo rsync -avz /etc/ssl/private/ /path/to/backup/ssl_private/
注意:私钥文件(.key
)需严格保密,备份目录应设置权限(如chmod 700 /path/to/backup
)。
若启用了Nginx状态模块(ngx_http_stub_status_module
),需备份状态文件:
sudo cp /var/run/nginx.pid /var/run/nginx.pid.bak # 记录Nginx进程ID
sudo tar -xzvf ssl_backup.tar.gz -C / # 解压到根目录,恢复原路径
若为单独文件,直接复制回原目录:
sudo cp /path/to/backup/your_domain.crt /etc/ssl/certs/
sudo cp /path/to/backup/your_domain.key /etc/ssl/private/
sudo mv /etc/nginx/nginx.conf.bak /etc/nginx/nginx.conf
sudo mv /etc/nginx/sites-available/default.bak /etc/nginx/sites-available/default
若备份了整个sites-available
目录,替换后需确保符号链接正确:
sudo ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/ # 启用站点
确保Nginx进程(通常为www-data
用户)可读取证书和私钥:
sudo chown www-data:www-data /etc/ssl/certs/your_domain.crt
sudo chown www-data:www-data /etc/ssl/private/your_domain.key
sudo chmod 600 /etc/ssl/private/your_domain.key # 私钥权限必须为600
sudo nginx -t
若输出configuration file /etc/nginx/nginx.conf test is successful
,则表示配置正确。sudo systemctl reload nginx
cron
设置每日自动备份(如凌晨2点),例如:sudo crontab -e
添加以下内容:0 2 * * * tar -czvf /backup/nginx_ssl_$(date +\%Y\%m\%d).tar.gz /etc/nginx/nginx.conf /etc/nginx/sites-available/ /etc/ssl/certs/ /etc/ssl/private/
https://your_domain.com
,确认锁图标显示正常,或使用curl -v https://your_domain.com
检查证书信息;certbot
会自动续期,但需测试续期流程(sudo certbot renew --dry-run
),避免备份的证书过期后无法自动更新。