乐趣区

关于nginx:从Nginx源码看优雅阅读源码的姿势

前述

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 源码之 ngx_master_process_cycle

  • ngx_worker_process_cycle

细读我的项目外围解决流程

浏览思路

  1. 针对粗读的我的项目架构,拆解外围办法的外部逻辑
  2. 善用全局搜寻
  3. 善用 man 命令查看零碎函数
  4. 学习我的项目架构设计模式

外围逻辑梳理(具体版)

  • 事件处理流程

  • 模块解决流程

补充浏览:
《NGINX 源码浏览》
《Nginx HTTP 申请解决流程》

By 佐柱

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

退出移动版