1 逻辑流程

1 调试与错误映射初始化
  1 ngx_debug_init() → 激活内部调试钩子与断言机制
  2 ngx_strerror_init() → 绑定 OS errno 到可读描述字符串 (失败则退出)

2 命令行解析与版本信息
  1 ngx_get_options() → 解析 argc/argv 提取 -c/-p/-g/-s 等参数 (失败则退出)
  2 ngx_show_version 分支 → 打印编译版本信息,若非测试模式 (!ngx_test_config) 则直接 return 0

3 基础运行时组件初始化
  1 ngx_max_sockets = -1 → 占位初始化 (TODO 标记,后续由 OS 探测覆盖)
  2 ngx_time_init() → 建立时间缓存、时区基准与单调时钟
  3 [条件编译] ngx_regex_init() → 初始化 PCRE 正则引擎上下文
  4 ngx_pid / ngx_parent → 调用 getpid()/getppid() 获取当前与父进程 ID
  5 ngx_log_init() → 创建日志对象、分配日志文件路径与句柄 (失败则退出)

4 [条件编译] SSL/TLS 加密库初始化

5 核心上下文初始化
  1 ngx_memzero(&init_cycle) → 清零 ngx_cycle_t 结构体防历史脏数据污染
  2 init_cycle.log = log → 将日志对象绑定至初始化上下文
  3 ngx_cycle = &init_cycle → 设置全局指针指向 init_cycle 

6 内存池创建
   init_cycle.pool = ngx_create_pool(1024) → 分配 1KB 初始内存池 (失败则退出)

7 参数持久化
   ngx_save_argv() → 持久化保存 CLI 参数至 cycle 上下文 

8 基础路径设置
  ngx_process_options() → 标准化配置路径、prefix 目录与 error_log 路径

9 OS 能力探测与底层依赖初始化
  1 ngx_os_init() → 探测页大小/缓存行/最大 FD/并发限制等 OS 能力 ,设置进程标题环境,(失败则退出)
  2 ngx_crc32_table_init() → 初始化 CRC32 哈希表 (严格依赖 os_init 获取的 cacheline_size)
  3 ngx_slab_sizes_init() → 初始化 Slab 内存分配器尺寸分级 (严格依赖 os_init 获取的 pagesize)
  4 ngx_add_inherited_sockets() → 接管父进程通过环境变量传递的监听 Socket (支持平滑热重启)

10 模块注册与预初始化
   ngx_preinit_modules() → 将所有静态/动态模块指针注册至全局 ngx_modules 数组 (失败则退出)

11 创建完整的运行时周期对象
   ngx_init_cycle  
   通过解析配置文件创建核心运行时环境(cycle)。
   如果解析失败,则在测试模式下将错误输出到标准错误,并终止程序。

12 配置测试与转储

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐