在保證Nginx正常處理請求的情況下公升級Nginx

2021-08-22 06:16:46 字數 1557 閱讀 1997

nginx是乙個功能強大的web伺服器,用於服務於世界上許多最受歡迎的站點。 在本部落格中,我將演示如何在不丟失客戶端連線的情況下公升級nginx可執行檔案。

nginx通過在服務啟動時生成主程序來工作。同時,主服務會啟動乙個或多個處理實際客戶端連線的工作程序。 nginx旨在在收到管理員發出的特定訊號時執行某些操作。 使用這些訊號,您可以輕鬆地就地公升級nginx或其配置,而不會丟失客戶端連線。以下是nginx master程序與work程序之間常用的訊號:

usr2:這會產生一組新的master/worker程序,而不會影響舊的master/worker程序。

winch:這告訴nginx master 程序正常停止其關聯的worker 程序。

hup:這告訴nginx主程序重新讀取其配置檔案,同時該master程序下的生成新worker程序,這些worker也使用新的配置檔案。 如果新舊master程序正在執行,如果這個訊號傳送給舊master程序,該程序使用舊的配置檔案,該master生成的worker程序也使用舊的配置檔案。

quit:這樣可以優雅地關閉master程序及其worker程序。

term:這會使master程序及其worker程序的快速關閉。

kill:這會立即殺死乙個master程序及其worker程序而不進行任何清理。

1)備份nginx old 可執行檔案及配置檔案到指定的目錄

2)拷貝新的nginx 可執行檔案到nginx可執行目錄

3)kill -s "usr2" nginx old process id

4) kill -s "winch" nginx old process id

如果新的nginx 可執行檔案能正常處理新功能,這是我們就可以執行5)步驟。否則,我們就需要執行kill -s "hup" nginx old process id

5) kill -s "quit" nginx old process  id

1) 獲取nginx pid。使用ps 命令。從下圖可以看出來nginx pid為12223 。如下所示:

2)新的nginx bin檔案新加了nginx test模組。在沒公升級之前是不能訪問的。如下所示:

3)在更新nginx 配置檔案及可執行檔案後。執行nginx -s "usr2" 12223 。如下圖所示:

4)測試新的nginx 模組ok。

5)退出nginx old 

執行kill -s "usr2" 12223  及 kill -s 「quit」 12223。如下圖所示:

這樣不中斷連線就公升級成功了。        

[1] .

Nginx處理請求的流程

nginx處理請求過程 nginx使用乙個多程序模型來對外提供服務,乙個master程序和多個worker程序,master程序負責管理nginx本身和其他worker程序。所有實際上的業務處理邏輯都在worker程序。worker程序中有乙個函式,執行無限迴圈,不斷處理收到的來自客戶端的請求,並進...

Nginx請求處理流程

因為 nginx 執行在企業內網的最外層也就是邊緣節點,那麼他處理的的流量是其他應用伺服器處理流量的數倍,甚至幾個數量級,我們知道任何一種問題在不同的數量級下,他的解決方案是完全不同的,所以在 nginx 它所處理的應用場景中,所有的問題都會被放大,所以我們必須要去理解,為什麼 nginx 採用 m...

nginx處理web請求分析

nginx首先確定使用哪乙個server域來處理請求,下面的例子中有3個虛擬伺服器監聽 80埠。server server server 在上面的配置中,nignx會根據http請求 host 的值,確定具體哪乙個server接收web請求。如果 host 不存在或者host的值無法匹配任何seve...