1

前述

Nginx: 1.21.7
Os: unix

简单了解项目目录结构

auto

项目编译相关脚本

conf

项目配置

contrib

项目贡献

docs

项目文档

misc

杂项

src

项目源码
core
核心模块
event
事件模块,主要用于实现Nginx不同事件的处理逻辑
http
http服务模块,主要用于http服务的详细处理逻辑
mail
mail服务模块,主要用于mail服务的详细处理逻辑
misc
杂项
os
系统模块,主要处理相同逻辑在不同系统下的交互流程
stream
stream服务模块,主要用于stream服务的详细处理逻辑

粗读项目处理流程

阅读思路

  1. 寻找main入口
  2. if判断流程暂不涉及内部详细处理流程,可先通过方法名猜测内部逻辑(方法名有歧义或不清晰的可以进入下一级简单了解内部逻辑)
  3. 画图分析项目架构设计思路及核心逻辑
  4. 粗读核心逻辑

核心逻辑梳理(简版)

  • Nginx源码之main

Nginx源码之main

  • Nginx源码之ngx_master_process_cycle

Nginx源码之ngx_master_process_cycle

  • ngx_worker_process_cycle

Nginx源码之ngx_worker_process_cycle

细读项目核心处理流程

阅读思路

  1. 针对粗读的项目架构,拆解核心方法的内部逻辑
  2. 善用全局搜索
  3. 善用man命令查看系统函数
  4. 学习项目架构设计模式

核心逻辑梳理(详细版)

  • 事件处理流程

事件处理流程

  • 模块处理流程

模块处理流程

补充阅读:
《NGINX源码阅读》
《Nginx HTTP请求处理流程》

By佐柱

转载请注明出处,也欢迎偶尔逛逛我的小站,谢谢 :)


zoa_chou
156 声望6 粉丝