2024-11-29 06:08:46
Nginx的全局初始化过程围绕全局变量“cycle”展开,位于/src/core/cycle.c文件,其数据结构为“ngx_cycle_t”。了解Nginx源码前应掌握cycle全局变量初始化流程。
cycle初始化分为以下步骤:
创建内存池
用于后续分配的所有内存。
拷贝配置文件路径前缀
如“/usr/local/nginx”,存储在cycle->conf_prefix中。
复制Nginx路径前缀
存储于cycle->prefix。
复制配置文件信息
包含文件路径,如“/nginx/conf/nginx.conf”。
复制配置参数信息
初始化路径信息
初始化打开的文件句柄
初始化shared_memory链表
新旧链表比较,保留相同内存,释放不同。
遍历并打开文件列表(如日志、配置文件)
创建并初始化共享内存
比较新旧共享内存,保留或创建。
处理listening数组并开始监听
处理socket监听。
关闭或删除old_cycle资源
关键点在于内存池的创建、配置文件解析、文件句柄与共享内存的初始化、socket监听与资源关闭,整个流程确保Nginx核心组件的初始化完成。