nginx的模組與工作原理
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的功能才會如此強大。
nginx的模組從功能上分為如下三類。
handlers(處理器模組)。此類模組直接處理請求,並進行輸出內容和修改headers資訊等操作。handlers處理器模組一般只能有乙個。
filters (過濾器模組)。此類模組主要對其他處理器模組輸出的內容進行修改操作,最後由nginx輸出。
proxies (**類模組)。此類模組是nginx的http upstream之類的模組,這些模組主要與後端一些服務比如fastcgi等進行互動,實現服務**和負載均衡等功能。
nginx本身做的工作實際很少,當它接到乙個http請求時,它僅僅是通過查詢配置檔案將此次請求對映到乙個location block,而此location中所配置的各個指令則會啟動不同的模組去完成工作,因此模組可以看做nginx真正的勞動工作者。通常乙個location中的指令會涉及乙個handler模組和多個filter模組(當然,多個location可以復用同乙個模組)。handler模組負責處理請求,完成響應內容的生成,而filter模組對響應內容進行處理。
nginx的模組直接被編譯進nginx,因此屬於靜態編譯方式。啟動nginx後,nginx的模組被自動載入,不像apache,首先將模組編譯為乙個so檔案,然後在配置檔案中指定是否進行載入。在解析配置檔案時,nginx的每個模組都有可能去處理某個請求,但是同乙個處理請求只能由乙個模組來完成。
我有幾張阿里雲幸運券分享給你,用券購買或者公升級阿里雲相應產品會有特惠驚喜哦!把想要買的產品的幸運券都領走吧!快下手,馬上就要搶光了。
nginx的程序模型
在工作方式上,nginx分為單工作程序和多工作程序兩種模式。在單工作程序模式下,除主程序外,還有乙個工作程序,工作程序是單執行緒的;在多工作程序模式下,每個工作程序包含多個執行緒。nginx預設為單工作程序模式。
nginx在啟動後,會有乙個master程序和多個worker程序。
master程序
主要用來管理worker程序,包含:接收來自外界的訊號,向各worker程序傳送訊號,監控worker程序的執行狀態,當worker程序退出後(異常情況下),會自動重新啟動新的worker程序。
master程序充當整個程序組與使用者的互動介面,同時對程序進行監護。它不需要處理網路事件,不負責業務的執行,只會通過管理worker程序來實現重啟服務、平滑公升級、更換日誌檔案、配置檔案實時生效等功能。
Nginx工作原理
nginx web伺服器主要是由各種模組協同工作,模組從結構上分為核心模組,基礎模 塊和第三方模組,其中三類模組分別如下 1 核心模組 http模組 event模組和mail模組等 2 基礎模組 http access模組 http fastcgi模組 http proxy模組和http rewri...
Nginx工作原理
nginx engine x 是乙個高效能http 反向 imap pop3 smtp伺服器 nginx web伺服器主要是由各種模組協同工作 從結構上分為 核心模組 http模組 event模組和mail模組等 基礎模組 http access模組 http fastcgi模組 http prox...
nginx工作原理詳解
進入nginx的大致三種流量 web email及tcp nginx中三個狀態機 狀態機作用 nginx採用epoll非同步非阻塞事件驅動處理引擎,需要狀態機識別和處理請求,將解析出來的請求引導到靜態資源或磁碟快取 做反向 時 當靜態資源太多,記憶體不足以快取時,磁碟呼叫會退化成阻塞呼叫,所以我們使...