NGINX 架構 - 《模組化設計》

更新於 發佈於 閱讀時間約 5 分鐘

上一篇有提到﹝NGINX﹞低消耗高效能的原由,正來至於它優秀的架構設計,其架構主要包括:『模組化設計』、『事件驅動架構』、『請求處理機制』、『管理程式與多工程式設計』、『記憶體池設計』。

而這邊透過自己的理解,來專門介紹『模組化設計』,以此來幫助自己認識NGINX架構的內容。

什麼是「模組化設計」

談到Nginx Server的架構,就不能不提「模組化設計」,那什麼是「模組化設計」呢?

模組化設計(英語:Modular design),也稱模塊化設計,是門設計理論與實作方法,其旨在於將一個系統細分為許多小單元,稱為模組(module)或模塊(block),可以獨立的於不同的系統中被建立與使用。模組化設計的特徵為將功能切分為抽象的、可擴充的、可重複使用的模組;更多細節,在維基百科上就有介紹了 - 《模組化設計wiki

因為這不是這篇主要介紹的重點,故不深入介紹,只需要理解概念就行,所以我們應該要透過簡單的文字,來讓自己迅速理解才是,就好比我們學加法時的候都知道「1+1=2」,但不用真的去理解為什麼等於2吧!

簡而言之,所謂的「模組化設計」就是支援應用擴充與升級。就如同用積木搭房子一樣,各個模組之間既能保持自己原有的獨立性,也能透過介面保持聯繫。

模組是由數個「基礎功能元件」組成的「特定功能組件」
raw-image

Nginx Server 的開發完全遵循模組化設計思想,因此在應用擴充及升級方面,表現出極大的優越性。

Nginx 模組化結構

高度模組化的設計是Nginx 的架構基礎。Nginx Server 被分解為多個模組 ,每個模組就是一個功能模組,只負責自身的功能,模組之間嚴格遵循“高內聚,低耦合”的原則。

Nginx的模組又區分為五大類,分別為核心模組、標準HTTP模組、可選HTTP模組、郵件服務模組、第三方協力廠商模組。

NGINX 模組架構

NGINX 模組架構

Nginx的原始碼主要分佈在src/目錄下,src/目錄下也包含了所有的模組:

核心模組:

核心模組主要包含了對兩種功能的支援:
a. 主體功能:包含處理程序管理、許可權控制、錯誤記錄檔紀錄、設定解析等。
b. 回應請求事件功能:包含事件驅動機制、正規表示法解析等。

ngx_core:基礎核心庫和框架 -
NGINX的核心原始碼,包含常用的資料結構以及Nginx核心實現的程式碼。
ngx_event:事件驅動模型 -
NGINX事件驅動模型,以及定時器的實現相關代碼。

標準HTTP模組:

Nginx Server主要提供HTTP Service協議解析相關的功能,包含進階HTTP服務、Mail Service..等等,該模組皆在預設的情況下,直接被編譯到Nginx中。

ngx_http:HTTP 主要模組 -
Nginx主要都是Http Server的相關代碼,Port Config、Web編碼設定、HTTP響應頭設定 ...等等。

下面分享一些官方提供的常用標準HTTP模組:

可選HTTP模組:

可選HTTP模組與標準HTTP模組較為不同,這邊在快速編譯時,是預設不編譯的。如果想要使用相關模組,就必須再設定時使用

--with-XXX參數宣告

例如:Flash 多媒體傳輸 、解析 GeoIP 請求、 網路傳輸壓縮 、 安全協議 SSL 支援 ...等

下面分享一些官方提供的常用可選HTTP模組:

郵件服務模組:

Mail Service是Nginx Server提供的主要服務之一,但和可選HTTP模組一樣,快速編譯時,預設不編譯郵件服務模組。

這些模組完成了郵件服務的主要功能,包含對POP3協定、IMAP協定和SMTP協定的支援,對身分認證、郵件代理和SSL安全服務的提供

協力廠商模組:

主要是為了擴充套件 Nginx 伺服器應用,由眾多的協力廠商的開發者來自定義功能,比如: Json 支援、 Lua 支援等。

連結:NGINX 3rd Party Modules

參考資料:

a. Nginx維基百科
b. Nginx技術手札:網頁伺服器應用全攻略
c. Nginx官網

留言
avatar-img
留言分享你的想法!
avatar-img
Scott Salon
14會員
27內容數
技術筆記紀錄、生活隨筆
Scott Salon的其他內容
2022/07/08
承上篇【NGINX 架構 - 事件驅動架構】後續,這篇開始記錄函數庫的相關筆記 事件驅動處理函數庫: 函數庫的細節,就沒打算太過深入,我們只要知道模型的運作方式、優缺點及如何使用就足夠了。 1. select模型: 手動啟用模組編譯: 禁用模組編譯: 2. poll模型: Nginx編譯代碼:
Thumbnail
2022/07/08
承上篇【NGINX 架構 - 事件驅動架構】後續,這篇開始記錄函數庫的相關筆記 事件驅動處理函數庫: 函數庫的細節,就沒打算太過深入,我們只要知道模型的運作方式、優缺點及如何使用就足夠了。 1. select模型: 手動啟用模組編譯: 禁用模組編譯: 2. poll模型: Nginx編譯代碼:
Thumbnail
2022/06/30
上一篇有講完【NGINX 架構 - 《模組化設計》】後,接下來這邊透過自己的理解,來專門介紹『事件趨動架構』,以此來幫助自己認識NGINX架構的內容。 什麼是「事件驅動架構」 而這邊指的事件驅動架構是一種程式設計的方式 - 事件驅動程式設計(Event-driven programming)
Thumbnail
2022/06/30
上一篇有講完【NGINX 架構 - 《模組化設計》】後,接下來這邊透過自己的理解,來專門介紹『事件趨動架構』,以此來幫助自己認識NGINX架構的內容。 什麼是「事件驅動架構」 而這邊指的事件驅動架構是一種程式設計的方式 - 事件驅動程式設計(Event-driven programming)
Thumbnail
2022/06/08
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
Thumbnail
2022/06/08
什麼是NGINX ﹝NGINX﹞是一款免費的開源軟體的非同步框架的Web Server
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
微前端是一種現代前端架構,旨在將大型前端應用拆分為獨立、可獨立部署的小模組。這與微服務在後端的策略相似。 本文將探討微前端的基本概念,以及如何在基於Gin的後端系統中實施它,從而實現真正的全棧模組化。
Thumbnail
微前端是一種現代前端架構,旨在將大型前端應用拆分為獨立、可獨立部署的小模組。這與微服務在後端的策略相似。 本文將探討微前端的基本概念,以及如何在基於Gin的後端系統中實施它,從而實現真正的全棧模組化。
Thumbnail
在軟體開發領域中,良好的架構設計是實現可維護性、擴展性和重用性的關鍵。其中,"三層式架構"是一種常見且易於理解的架構模式。本文將介紹三層式架構的概念、優勢以及如何在你的軟體項目中應用它。
Thumbnail
在軟體開發領域中,良好的架構設計是實現可維護性、擴展性和重用性的關鍵。其中,"三層式架構"是一種常見且易於理解的架構模式。本文將介紹三層式架構的概念、優勢以及如何在你的軟體項目中應用它。
Thumbnail
ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 htt
Thumbnail
ModSecurity 是普遍應用之 公開網頁程式防火牆 ( 可 搭配 OWASP (Open Web Application Security Project) 維護的免費核心規則集 Core Rule Set CRS 初始設計 為 Apache HTTP Server 之模組 後續發展成 htt
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
這篇文章將會講述使用 C# 的類( Class ) 來讓欄位模組(module)化。
Thumbnail
在我們使用的網站中,一個頁面會是由好幾個部份,例如按鈕、菜單、表格、卡片,這些部份可以在不同的畫面重複使用的就稱為元件(Component),今天要跟大家分享的「6個前端工程師私藏的元件庫」!
Thumbnail
在我們使用的網站中,一個頁面會是由好幾個部份,例如按鈕、菜單、表格、卡片,這些部份可以在不同的畫面重複使用的就稱為元件(Component),今天要跟大家分享的「6個前端工程師私藏的元件庫」!
Thumbnail
為何大公司都使用Nx ? Monorepo的工具五分鐘快速建置 簡介:Nx 一個快速、有效、有相當好延展性的Monorepo工具 理念:Nx 與知名程式編輯器Visual Studio Code有著相同的設計哲學,以Nx核心來說,擁有著簡潔、不模糊、明瞭的特性。
Thumbnail
為何大公司都使用Nx ? Monorepo的工具五分鐘快速建置 簡介:Nx 一個快速、有效、有相當好延展性的Monorepo工具 理念:Nx 與知名程式編輯器Visual Studio Code有著相同的設計哲學,以Nx核心來說,擁有著簡潔、不模糊、明瞭的特性。
Thumbnail
承上篇【NGINX 架構 - 事件驅動架構】後續,這篇開始記錄函數庫的相關筆記 事件驅動處理函數庫: 函數庫的細節,就沒打算太過深入,我們只要知道模型的運作方式、優缺點及如何使用就足夠了。 1. select模型: 手動啟用模組編譯: 禁用模組編譯: 2. poll模型: Nginx編譯代碼:
Thumbnail
承上篇【NGINX 架構 - 事件驅動架構】後續,這篇開始記錄函數庫的相關筆記 事件驅動處理函數庫: 函數庫的細節,就沒打算太過深入,我們只要知道模型的運作方式、優缺點及如何使用就足夠了。 1. select模型: 手動啟用模組編譯: 禁用模組編譯: 2. poll模型: Nginx編譯代碼:
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News