在備份前,需先定位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
),避免備份的證書過期后無法自動更新。