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内存管理