風信網(ithov.com)原創文章:Nginx由內核和模組組成,其中,內核的設計非常微小和簡潔,完成的工作也非常簡單,僅僅通過查找設定檔將用戶端請求映射到一個location block(location是Nginx配置中的一個指令,用於URL匹配),而在這個location中所配置的每個指令將會啟動不同的模組去完成相應的工作。
Nginx的模組從結構上分為核心模組、基礎模組和協力廠商模組,HTTP模組、EVENT模組和MAIL模組等屬於核心模組,HTTP Access模組、HTTP FastCGI模組、HTTP Proxy模組和HTTP Rewrite模組屬於基礎模組,而HTTP Upstream Request Hash模組、Notice模組和HTTP Access Key模組屬於協力廠商模組,使用者根據自己的需要開發的模組都屬於協力廠商模組。 正是有了這麼多模組的支撐,Nginx的功能才會如此強大。
&HTTP://www.aliyun.com/zixun/aggregation/37954.html">nbsp; Nginx的模組從功能上分為如下三類。
口Handlers(處理器模組)。 此類別模組直接處理請求,並進行輸出內容和修改headers資訊等操作。 Handlers處理器模組一般只能有一個。
口Filters(篩檢程式模組)。 此類別模組主要對其他處理器模組輸出的肉容進行修改操作,最後由Nginx輸出。
口Proxies(代理類別模組)。 此類別模組是Nginx的HTTP Upstream之類的模組,這些模組主要與後端一些服務比如FastCGI等進行交互,實現服務代理和負載均衡等功能。
圖I-I展示了Nginx模組常規的HTTP請求和回應的過程。
圖1-1 Nginx模組的HTTP請求和回應過程
在工作方式上,Nginx分為單工作進程和多工作進程兩種模式。 在單工作進程模式下,除主進程外,還有一個工作進程,工作進程是單線程的;在多工作進程模式下,每個工作進程包含多個執行緒。 Nginx預設為單工作進程模式。
Nginx的模組直接被編譯進Nginx,因此屬於靜態編譯方式。 啟動Nginx後,Nginx的模組被自動載入,不像Apache,首先將模組編譯為一個SO檔,然後在設定檔中指定是否進行載入。 在解析設定檔時,Nginx的每個模組都有可能去處理某個請求,但是同一個處理請求只能由一個模組來完成。