0 环境配置

版本:Nginx-1.22.1 (稳定版本)

1 整体代码结构

core:存储核心代码,一些自定义的数据结构,例如字符串、数字、链表、散列表、基数树、红黑树等。还有一些结结构体

event:事件处理模块相关的,select、epoll、poll、kqueue等

http:处理http请求相关的代码

mail:邮件服务器相关

misc:性能分析工具gperftools、兼容性分析工具

os:跨平台实现的代码

stream:反向代理相关功能

2 Nginx基础架构和设计理念

2.1 Nginx进程模型

(1)异步非阻塞

(2)CPU绑定

(3)负载均衡

2.2 模块化设计

接口规范

struct ngx_module_s {
ngx_uint_t ctx_index;
ngx_uint_t index;

char *name;

ngx_uint_t spare0;
ngx_uint_t spare1;

ngx_uint_t version;
const char *signature;

void *ctx;
ngx_command_t *commands;
ngx_uint_t type;

ngx_int_t (*init_master)(ngx_log_t *log);

ngx_int_t (*init_module)(ngx_cycle_t *cycle);

ngx_int_t (*init_process)(ngx_cycle_t *cycle);
ngx_int_t (*init_thread)(ngx_cycle_t *cycle);
void (*exit_thread)(ngx_cycle_t *cycle);
void (*exit_process)(ngx_cycle_t *cycle);

void (*exit_master)(ngx_cycle_t *cycle);

uintptr_t spare_hook0;
uintptr_t spare_hook1;
uintptr_t spare_hook2;
uintptr_t spare_hook3;
uintptr_t spare_hook4;
uintptr_t spare_hook5;
uintptr_t spare_hook6;
uintptr_t spare_hook7;
};

3 Nginx内存管理