重新載入而非重新啟動
重新載入會讓 NGINX 再次讀取設定,啟動新的工作處理程序,並讓舊程序完成尚未結束的請求,因此訪客通常不會察覺。如果無法套用新設定,NGINX 會繼續使用舊設定運作。重新啟動會先停止服務,因此會中斷連線;若設定有誤,服務可能無法再次啟動。
備份要變更的檔案
編輯前,在檔案旁建立一份副本,並在名稱中加入日期。不要將副本留在 NGINX 使用萬用字元載入的目錄中,例如 conf.d/*.conf 或 sites-enabled/*,否則副本也會被載入。在 Debian 和 Ubuntu 上,請編輯 sites-available 中的檔案;sites-enabled 中的項目通常只是指向該檔案的連結。
sudo cp -a /etc/nginx/sites-available/example.conf /root/example.conf.$(date +%Y%m%d-%H%M%S)先測試,再重新載入
nginx -t 會檢查語法及設定參照的檔案,例如憑證。使用 nginx -T 可檢視納入所有引入檔案後的完整設定。只有測試通過後才重新載入;以 && 串接指令即可確保這點。測試無法判斷設定是否達到你的預期,因此之後還應開啟網站檢查。
sudo nginx -t && sudo systemctl reload nginx
sudo nginx -T | less
curl -I https://example.com/發生問題時
還原備份副本,重新測試,再重新載入。若服務已停止,錯誤紀錄及系統日誌會說明原因。請留意連接埠已被占用、憑證遺失或伺服器名稱重複等訊息。
sudo cp -a /root/example.conf.20261031-120000 /etc/nginx/sites-available/example.conf
sudo nginx -t && sudo systemctl reload nginx
sudo journalctl -u nginx -n 50 --no-pager
sudo tail -n 50 /var/log/nginx/error.log重新載入無法涵蓋的情況
WebSockets 等長時間連線會持續由舊工作處理程序處理,直到連線結束,因此舊程序可能繼續執行一段時間,並使用額外記憶體。套件升級可能會自行重新啟動服務。較大的變更應先在測試伺服器上驗證,包括憑證和重新導向。
CH-J Server Manager 中的 NGINX Manager
NGINX Manager 可編輯 Linux 伺服器上受管理的 NGINX 目錄中的設定檔,每個檔案上限為 512 KiB。儲存時,應用程式會建立帶有 .chj-backup- 後綴的備份,執行 nginx -t,並且只在測試成功後保留變更。重新載入需要你明確確認,並會在開始前再次測試。sites-enabled 中已啟用的符號連結不會被取代;請編輯 sites-available 中對應的檔案。