當nginx重新載入時,master進程會先檢查語法有效性,然後再嘗試套用新的設定。如果成功,它將啟動新的工作進程,並向舊的工作進程發送訊息,請求它們正常關閉。
主進程何時向舊工作進程發送關閉訊息 - 是與建立新工作進程並行還是僅在新工作進程啟動後發送?
想了解 nginx 重新載入是否需要更長的時間,在重新載入時間內它是否能夠處理新連線?
答案1
這是來自 nginx 文檔:
為了讓nginx重新讀取設定文件,應該要向master進程發送一個HUP訊號。主程序首先檢查語法有效性,然後嘗試套用新的配置,即開啟日誌檔案和新的監聽套接字。如果失敗,它將回滾更改並繼續使用舊配置。如果成功,它將啟動新的工作進程,並向舊的工作進程發送訊息,請求它們正常關閉。舊的工作程序關閉監聽套接字並繼續為舊客戶端提供服務。為所有客戶端提供服務後,舊的工作進程將會關閉。
一個舊的工作進程保持活動狀態以服務連線。如果新的worker可以啟動,舊的worker就會被關閉。否則 nginx 會再次啟動舊的工作進程。
文件中還有該過程的詳細範例。
希望這可以幫助!