背景介紹
什么是nginx
nginx是由俄羅斯人開發(fā)的一個(gè)HTTP服務(wù)器,發(fā)音:engine X ,是一個(gè)高性能的http和反向代理,負(fù)載均衡服務(wù)器。業(yè)界一致認(rèn)為是apache + mod_proxy_balancer 輕量級替代者,它不僅相應(yīng)靜態(tài)頁面的速度很快,而且它的模塊數(shù)量達(dá)到apache的2/3。 對proxy和rewrite 模塊的支持很徹底。
特點(diǎn)
專為性能優(yōu)化而生,支持內(nèi)核poll模型,能經(jīng)受住高負(fù)載,50000個(gè)并發(fā)連接數(shù)不成問題。nginx采取了分階段資源分配技術(shù),使得其對內(nèi)存和cpu的占用率很低,保持10000個(gè)無活動(dòng)連接只占用2.5M內(nèi)存。反觀apache,一般200個(gè)進(jìn)程以上,web響應(yīng)速度就明顯緩慢了。支持熱部署,可以不停止服務(wù)升級nginx版本。nginx采用了master-slave模型,能充分利用SMP的優(yōu)勢,能減小工作時(shí)的I/O延遲
- SMP架構(gòu)* 兩個(gè)或多個(gè)同樣的處理器通過一塊共享內(nèi)存彼此連接。每個(gè)處理器可以同等地訪問共享內(nèi)存(具有相同的內(nèi)存空間訪問延遲)。
nginx架構(gòu)

圖片發(fā)自簡書App
1個(gè)master進(jìn)程+多個(gè)worker進(jìn)程
- msater進(jìn)程:管理worker進(jìn)程,接收來自外界的信號(hào),向各個(gè)worker進(jìn)程發(fā)送信號(hào),監(jiān)控worker進(jìn)程的狀態(tài),當(dāng)某個(gè)worker異常退出后,master進(jìn)程會(huì)重新啟動(dòng)一個(gè)新的worker進(jìn)程來接替。
- worker進(jìn)程:處理基本的網(wǎng)絡(luò)事件,每個(gè)worker平等競爭來自客戶端的請求,各個(gè)worker相互獨(dú)立,一個(gè)請求只能在一個(gè)worker中處理,不能處理其他進(jìn)程的請求,worker進(jìn)程數(shù)量可以設(shè)定,一般設(shè)為cpu的核心數(shù)。