Nginx 的模組化體系結構
Nginx 的內部結構是由核心部分和一系列的功能模組所組成。 ( 建議學習:nginx使用 )
這樣分割是為了讓每個模組的功能相對簡單,以便於開發,同時也方便對系統進行功能擴充。為了方便描述,下文中我們將使用 Nginx core 來稱呼 Nginx 的核心功能部分。
Nginx 提供了 Web 伺服器的基礎功能,同時提供了 Web 服務反向代理,Email 服務反向代理功能。
Nginx core實作了底層的通訊協議,為其他模組和 Nginx 流程建構了基本的執行時間環境,並且建構了其他各模組的協作基礎。除此之外,或者說大部分與協定相關的,或是應用相關的功能都是在這些模組中實現的。
模組概述
Nginx 將各功能模組組織成一條鏈,當有請求到達的時候,請求依次經過這條鏈上的部分或全部模組,進行處理。每個模組實現特定的功能。
例如,實作對請求解壓縮的模組,實作 SSI 的模組,實作與上游伺服器通訊的模組,實作與 FastCGI 服務進行通訊的模組。
有兩個模組比較特殊,他們居於 Nginx core 和各功能模組的中間。這兩個模組就是 http 模組和 mail 模組。
這2 個模組在Nginx core 之上實現了另外一層抽象,處理與HTTP 協定和Email 相關協定(SMTP/POP3/IMAP)有關的事件,並且確保這些事件能被以正確的順序調用其他的一些功能模組。
目前 HTTP 協定是實作在 http 模組中的,但有可能將來被剝離到一個單獨的模組中,以擴展 Nginx 支援 SPDY 協定。
模組的分類
Nginx 的模組基本上可以根據其功能分為以下幾種類型:
#event module: 搭建了獨立於作業系統的事件處理機制的框架,及提供了各具體事件的處理。包括 ngx_events_module, ngx_event_core_module和ngx_epoll_module 等。 Nginx 具體使用何種事件處理模組,這依賴於具體的作業系統和編譯選項。
phase handler: 此類型的模組也直接稱為 handler 模組。主要負責處理客戶端請求並產生待回應內容,例如 ngx_http_static_module 模組,負責客戶端的靜態頁面請求處理並將對應的磁碟檔案準備為回應內容輸出。
output filter: 也稱為 filter 模組,主要是負責輸出的內容處理,可以修改輸出。例如,可以實現對輸出的所有 html 頁面增加預先定義的 footbar 一類的工作,或對輸出的圖片的 URL 進行替換之類的工作。
upstream: upstream 模組實現反向代理的功能,將真正的請求轉發到後端伺服器上,並從後端伺服器上讀取回應,發回客戶端。 upstream 模組是一種特殊的 handler,只不過回應內容不是真正由自己產生的,而是從後端伺服器上讀取的。
load-balancer: 負載平衡模組,實作特定的演算法,在眾多的後端伺服器中,選擇一個伺服器出來作為某個請求的轉送伺服器。
以上是Nginx的模組化體系結構介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!