Nginx 由內(nèi)核和模塊組成。
Nginx 本身做的工作實(shí)際很少,當(dāng)它接到一個(gè) HTTP 請(qǐng)求時(shí), 它僅僅是通過(guò)查找配置文件將此次請(qǐng)求映射到一個(gè) location block,而此 location 中所配 置的各個(gè)指令則會(huì)啟動(dòng)不同的模塊去完成工作,因此模塊可以看做 Nginx 真正的勞動(dòng)工作者。
通常一個(gè) location 中的指令會(huì)涉及一個(gè) handler 模塊和多個(gè) filter 模塊(當(dāng)然,多個(gè) location 可以復(fù)用同一個(gè)模塊)。handler 模塊負(fù)責(zé)處理請(qǐng)求,完成響應(yīng)內(nèi)容的生成,而 filter 模塊對(duì)響應(yīng)內(nèi)容進(jìn)行處理。 用戶根據(jù)自己的需要所開(kāi)發(fā)的模塊都屬于第三方模塊。正是有了這么多模塊的支撐, Nginx 的功能才會(huì)如此強(qiáng)大。
Nginx 的模塊從結(jié)構(gòu)上分為核心模塊、基礎(chǔ)模塊和第三方模塊:
核心模塊:HTTP 模塊、EVENT 模塊和 MAIL 模塊; ?
基礎(chǔ)模塊:HTTP Access 模塊、HTTP FastCGI 模塊、HTTP Proxy 模塊和 HTTP Rewrite 模塊;
第三方模塊:HTTP Upstream Request Hash 模塊、Notice 模塊和 HTTP Access Key 模 塊。
?
Handlers(處理器模塊):此類模塊直接處理請(qǐng)求,并進(jìn)行輸出內(nèi)容和修改 headers 信息等操作。Handlers 處理器模塊一般只能有一個(gè); ?Filters(過(guò)濾器模塊):此類模塊主要對(duì)其他處理器模塊輸出的內(nèi)容進(jìn)行修改操作,最后由 Nginx 輸出; Proxies(代理類模塊):此類模塊是 Nginx 的 HTTP Upstream 之類的模塊,這些模塊主要與后端一些服務(wù)比如 FastCGI 等進(jìn)行交互,實(shí)現(xiàn)服務(wù)代理和負(fù)載均衡等功能。
在單工作進(jìn)程模式下,除主進(jìn)程外,還有一個(gè)工作進(jìn)程,工作進(jìn)程是單線程的; ?
在多工作進(jìn)程模式下,每個(gè)工作進(jìn)程包含多個(gè)線程。Nginx 默認(rèn)為單工作進(jìn)程模式。
master 進(jìn)程主要用來(lái)管理 worker 進(jìn)程,主要包含:接收來(lái)自外界的信號(hào),向各 worker 進(jìn)程發(fā)送信號(hào),監(jiān)控 worker 進(jìn)程的運(yùn)行狀態(tài),當(dāng) worker 進(jìn)程退出后(異常情況下),會(huì)自動(dòng) 重新啟動(dòng)新的 worker 進(jìn)程。 master 進(jìn)程充當(dāng)整個(gè)進(jìn)程組與用戶的交互接口,同時(shí)對(duì)進(jìn)程進(jìn)行監(jiān)護(hù)。它不需要處理網(wǎng)絡(luò)事件,不負(fù)責(zé)業(yè)務(wù)的執(zhí)行,只會(huì)通過(guò)管理worker 進(jìn)程來(lái)實(shí)現(xiàn)重啟服務(wù)、平滑升級(jí)、更換日志文件、配置文件實(shí)時(shí)生效等功能。
Nginx 不支持對(duì)外部程序的直接調(diào)用或者解析,所有的外部程序(包括 PHP)必須通過(guò)FastCGI 接口來(lái)調(diào)用。FastCGI 接口在 Linux 下是 socket(這個(gè) socket 可以是文件 socket, 也可以是 ip socket)。 wrapper 為了調(diào)用 CGI 程序,還需要一個(gè) FastCGI 的 wrapper(wrapper 可以理解為用于啟動(dòng)另一個(gè)程序的程序),這個(gè) wrapper 綁定在某個(gè)固定 socket 上,如端口或者文件 socket。當(dāng) Nginx 將 CGI 請(qǐng)求發(fā)送給這個(gè) socket 的時(shí)候,通過(guò) FastCGI 接口,wrapper 接收到請(qǐng)求,然后 Fork(派生)出一個(gè)新的線程,這個(gè)線程調(diào)用解釋器或者外部程序處理腳本并讀取返回?cái)?shù)據(jù);接著 wrapper 再將返回的數(shù)據(jù)通過(guò) FastCGI 接口,沿著固定的 socket傳遞給 Nginx;最后 Nginx 將返回的數(shù)據(jù)(html 頁(yè)面或者圖片)發(fā)送給客戶端。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
名稱欄目:Nginx工作原理詳解-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://vcdvsql.cn/article6/hdgog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站設(shè)計(jì)、關(guān)鍵詞優(yōu)化、網(wǎng)站建設(shè)、企業(yè)建站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容