我們都知道Nginx內(nèi)部由核心模塊和其他功能模塊組成,這種簡(jiǎn)單的結(jié)構(gòu)分層便于進(jìn)行功能的擴(kuò)展,代碼更加清晰易于維護(hù)。我們通常將其分為五大模塊:核心模塊,標(biāo)準(zhǔn)HTTP模塊,可選HTTP模塊,郵件服務(wù)模塊和第三方模塊。下面我們就一一為大家介紹一下。
我們都知道Nginx內(nèi)部由核心模塊和其他功能模塊組成,這種簡(jiǎn)單的結(jié)構(gòu)分層便于進(jìn)行功能的擴(kuò)展,代碼更加清晰易于維護(hù)。我們通常將其分為五大模塊:核心模塊,標(biāo)準(zhǔn)HTTP模塊,可選HTTP模塊,郵件服務(wù)模塊和第三方模塊。下面我們就一一為大家介紹一下。
核心模塊
核心模塊是程序運(yùn)行所不可或缺的,它為Nginx提供了最基本的服務(wù)功能,比如權(quán)限控制、進(jìn)程管理、日志操作等。
標(biāo)準(zhǔn)HTTP模塊
作為HTTP
服務(wù)器必須的標(biāo)準(zhǔn)功能模塊,包括對(duì)HTTP的訪問控制、基本認(rèn)證、URL重寫、
負(fù)載均衡等。
可選HTTP模塊
用于擴(kuò)展標(biāo)準(zhǔn)的HTTP功能,比如常見的SSL加密、GeoIP、FLV處理。
郵件服務(wù)模塊
實(shí)現(xiàn)了郵件服務(wù)器的代理功能,包含imap、pop3、smtp3種郵件協(xié)議的支持。
第三方模塊
這個(gè)無須解釋了吧,正是因?yàn)橛辛诉@功能才令Nginx顯得異常強(qiáng)大。
架構(gòu)一覽
Nginx是基于事件驅(qū)動(dòng)模型設(shè)計(jì)的,進(jìn)程能夠同時(shí)處理多個(gè)并發(fā)請(qǐng)求。它采用Master-Worker工作模式,啟動(dòng)過程如下:?jiǎn)?dòng)后會(huì)創(chuàng)建一個(gè)主進(jìn)程,主進(jìn)程負(fù)責(zé)監(jiān)聽外部請(qǐng)求,并將請(qǐng)求派發(fā)給Worker進(jìn)程處理,Worker進(jìn)程會(huì)將請(qǐng)求通過代理轉(zhuǎn)發(fā)到后端服務(wù)器,由后端
服務(wù)器進(jìn)行處理。
Master進(jìn)程
也叫監(jiān)控進(jìn)程,主要監(jiān)聽外部請(qǐng)求和管理Worker子進(jìn)程,還有負(fù)責(zé)更換日志文件、配置讀取、平滑升級(jí)等。
Worker進(jìn)程
也叫工作進(jìn)程,負(fù)責(zé)與后端服務(wù)器通信,接收處理結(jié)果,Cache和響應(yīng)客戶端請(qǐng)求。
請(qǐng)求處理
Nginx通常作為Web
服務(wù)器使用,與客戶端存在一對(duì)多的關(guān)系,這就要求它必須能夠同時(shí)為多個(gè)客戶端提供服務(wù)。那么Nginx處理請(qǐng)求的過程如何呢?
Nginx采用多進(jìn)程機(jī)制(Master-Worker)和異步機(jī)制,每個(gè)Worker進(jìn)程都使用異步非阻塞方式,可以同時(shí)處理多個(gè)請(qǐng)求。當(dāng)某個(gè)Worker進(jìn)程接收請(qǐng)求之后,調(diào)用IO進(jìn)行處理,如果不能立即得到結(jié)果,就去優(yōu)先處理其他的請(qǐng)求;而客戶端在此期間也不用等待響應(yīng)結(jié)果,能夠去處理其他操作;當(dāng)結(jié)果返回時(shí),就會(huì)通知這個(gè)Worker進(jìn)程,然后進(jìn)行響應(yīng)。
以上就是我們關(guān)于五大模塊的簡(jiǎn)單介紹,希望對(duì)大家有所幫助。