nginx有兩種工做模式:master-worker模式和單進程模式。在master-worker模式下,有一個master進程和至少一個的worker進程,單進程模式顧名思義只有一個進程。這兩種模式有各自的特色和適用場景。linux
master-worker模式下nginx啓動成功後,會有一個master進程和至少一個的worker進程。master進程負責處理系統信號,加載配置,管理worker進程(啓動,殺死,監控,發送消息/信號等)。worker進程負責處理具體的業務邏輯,也就是說,對外部來講,真正提供服務的是worker進程。生產環境下通常使用這種模式。 nginx
1)穩定性高,只要還有worker進程存活,就可以提供服務,而且一個worker進程掛掉master進程會當即啓動一個新的worker進程,保證worker進程數量不變,下降服務中斷的機率。ide
2)配合linux的cpu親和性配置,能夠充分利用多核cpu的優點,提高性能工具
3)處理信號/配置從新加載/升級時能夠作到儘量少或者不中斷服務性能
單進程模式下,nginx啓動後只有一個進程,nginx的全部工做都由這個進程負責。所以,該模式通常只在開發階段和調試時使用,生產環境下不會使用。 3d
單進程模式因爲只有一個進程,所以能夠很方便地利用gdb等工具進行調試。調試
單進程模式不支持nginx的平滑升級功能,任何的信號處理均可能形成服務中斷,而且因爲是單進程,進程掛掉後,在沒有外部監控的狀況下,沒法重啓服務。blog