用“剖析”这个词语有点大言不惭了。
一直对服务器编程感兴趣,选择nginx作为分析的对象是因为其效率比较高,代码量也比较合适(10W行左右),
代码质量高,作者对效率要求非常高,对代码也有异乎寻常的洁癖。
打算写成一个系列,但是本人文档水平一直偏弱,而且写在这里主要目的也只是为了当作学习笔记记录,所以如果各位看官觉得
水平太菜的话尽请见谅,如果有任何错误,敬请指出,在此先行谢过了。
要分析源码,首先需要知道其功能,关于功能请google之。然后分析总体结构,最后深入每一个小块逐步研究和学习。
首先看下Nginx的目录结构:
Nginx源码的src目录下分为如下6个子目录
1. core // 是Nginx服务器的主干部分,包含基本数据结构,main()函数,写log等等
2. event // 事件驱动模型以及相关代码
3. http // 不用多解释了,肯定与http的实现相关了
4. mail // 邮件代理相关了
5. misc //C++兼容性测试和google perftools模块的源码
6. os // 包装(是包装)了系统的函数调用,Unix网络编程里面把这个方式叫做“包裹函数”
最后附上一个讲座视频:http://blog.zhuzhaoyuan.com/category/software/nginx/
和一张结构大图: