W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Nginx 的內(nèi)部結(jié)構(gòu)是由核心部分和一系列的功能模塊所組成。這樣劃分是為了使得每個模塊的功能相對簡單,便于開發(fā),同時也便于對系統(tǒng)進行功能擴展。為了便于描述,下文中我們將使用 Nginx core 來稱呼 Nginx 的核心功能部分。
Nginx 提供了 Web 服務器的基礎(chǔ)功能,同時提供了 Web 服務反向代理,Email 服務反向代理功能。Nginx core實現(xiàn)了底層的通訊協(xié)議,為其他模塊和 Nginx 進程構(gòu)建了基本的運行時環(huán)境,并且構(gòu)建了其他各模塊的協(xié)作基礎(chǔ)。除此之外,或者說大部分與協(xié)議相關(guān)的,或者應用相關(guān)的功能都是在這些模塊中所實現(xiàn)的。
Nginx 將各功能模塊組織成一條鏈,當有請求到達的時候,請求依次經(jīng)過這條鏈上的部分或者全部模塊,進行處理。每個模塊實現(xiàn)特定的功能。例如,實現(xiàn)對請求解壓縮的模塊,實現(xiàn) SSI 的模塊,實現(xiàn)與上游服務器進行通訊的模塊,實現(xiàn)與 FastCGI 服務進行通訊的模塊。
有兩個模塊比較特殊,他們居于 Nginx core 和各功能模塊的中間。這兩個模塊就是 http 模塊和 mail 模塊。這 2 個模塊在 Nginx core 之上實現(xiàn)了另外一層抽象,處理與 HTTP 協(xié)議和 Email 相關(guān)協(xié)議(SMTP/POP3/IMAP)有關(guān)的事件,并且確保這些事件能被以正確的順序調(diào)用其他的一些功能模塊。
目前 HTTP 協(xié)議是被實現(xiàn)在 http 模塊中的,但是有可能將來被剝離到一個單獨的模塊中,以擴展 Nginx 支持 SPDY 協(xié)議。
Nginx 的模塊根據(jù)其功能基本上可以分為以下幾種類型:
event module: 搭建了獨立于操作系統(tǒng)的事件處理機制的框架,及提供了各具體事件的處理。包括 ngx_events_module, ngx_event_core_module和ngx_epoll_module 等。Nginx 具體使用何種事件處理模塊,這依賴于具體的操作系統(tǒng)和編譯選項。
phase handler: 此類型的模塊也被直接稱為 handler 模塊。主要負責處理客戶端請求并產(chǎn)生待響應內(nèi)容,比如 ngx_http_static_module 模塊,負責客戶端的靜態(tài)頁面請求處理并將對應的磁盤文件準備為響應內(nèi)容輸出。
output filter: 也稱為 filter 模塊,主要是負責對輸出的內(nèi)容進行處理,可以對輸出進行修改。例如,可以實現(xiàn)對輸出的所有 html 頁面增加預定義的 footbar 一類的工作,或者對輸出的圖片的 URL 進行替換之類的工作。
upstream: upstream 模塊實現(xiàn)反向代理的功能,將真正的請求轉(zhuǎn)發(fā)到后端服務器上,并從后端服務器上讀取響應,發(fā)回客戶端。upstream 模塊是一種特殊的 handler,只不過響應內(nèi)容不是真正由自己產(chǎn)生的,而是從后端服務器上讀取的。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: