Nginx 中主要有以下幾種模塊類型?
類型 | 含義 |
---|
NGX_CORE_MODULE | 核心模塊(如進程管理、錯誤日志、配置解析)。 |
NGX_EVENT_MODULE | 事件模塊(如 epoll、kqueue 等 IO 多路復用機制的實現)。 |
NGX_HTTP_MODULE | HTTP 模塊(處理 HTTP 請求,如靜態資源服務、反向代理)。 |
NGX_MAIL_MODULE | 郵件協議模塊(支持 POP3、IMAP、SMTP)。 |
NGX_STREAM_MODULE | TCP/UDP 流量代理模塊(處理四層協議)。 |
NGX_CONF_MODULE | 配置解析模塊(用于動態加載配置)。 |
-
解耦與擴展 :通過 type
字段,Nginx 將不同功能的模塊解耦,開發者可以按需擴展新模塊(如自定義 HTTP 模塊),無需修改核心代碼。
-
統一管理 :所有模塊通過 ngx_modules
數組集中管理,type
字段使得遍歷和篩選模塊變得高效。
-
初始化順序 :核心模塊(NGX_CORE_MODULE
)最先初始化,負責基礎配置;事件模塊次之,HTTP 模塊最后,確保依賴關系正確。
-
按需加載 :通過 type
快速篩選出需要的模塊,避免遍歷無關模塊。
-
事件驅動 :事件模塊的 type
決定了使用的 IO 模型(如 epoll),直接影響性能。
模塊類型的值(如 NGX_CORE_MODULE
)通過 四字節 ASCII 字符組合 的方式設計
例如:
#define NGX_CORE_MODULE 0x45524F43 /* "CORE" */
-
0x43
→ 'C'
-
0x4F
→ 'O'
-
0x52
→ 'R'
-
0x45
→ 'E'
-
組合起來就是字符串 "CORE"
- 小端序(Little-Endian) :低位字節存儲在低地址。
CORE
→ 0x45 0x52 0x4F 0x43
→ 0x45524F43