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