【二】nginx源码文件结构浏览

    要读大项目的源码,最好还是先把项目文件组织结构弄清楚,这样后面找源码会比较方便,对整体项目的架构也能有一个具体一些的概念。

    我下载的nginx源码版本不可考,按日期来看是20157月的最新版本。解压包获得源码文件夹,进入根目录发现有几个子目录:autoconfcontribdocsmiscsrc。从字面上猜测,是自动机或脚本(auto script)、配置文件(configuration)、支持文件(contributions)、文档(document)、杂项(miscellaneous)、源码(source code)。

1、浏览源码文件夹根目录

    按照惯例,我选择先看看文档,但是doc子目录里并没有详细的离线文档,只有nginx官网的链接和一些看不懂的小文件。

    杂项misc里也只有看不太懂的一个GNUmakefile和一个README文件。

    contrib子目录里有一个geo2nginx.plgeo模块的CSV数据库格式转换perl脚本),一套编码转换文件(包括两个编码映射表和一个编码转换perl脚本),和vimnginx专用语法高亮配置文件。

    conf子目录里有几个编码映射表、变量映射表和一个服务器配置文件。

    auto子目录里有包括服务器安装脚本在内的许多脚本,现在看脚本还比较吃力,所以只简单浏览一下。我们发现nginx支持很多主流的操作系统平台:苹果的开源系统darwin、重要的Unix分支freebsdlinux、大多数版本已经开源的又一个Unix分支solaris、用户占有率最高的win32

    src子目录果然都是需要研究的nginxC源码,下面我们会深入浏览。

2、浏览src子目录

    还是来看一下src子目录下有哪些子目录:coreeventhttpmailmiscmysqlosstream。还是来按照字面意思猜测一下:核心(主函数、数据结构、主要方法)、事件(事件处理机制)、超文本传输协议(http相关)、邮件(邮件相关)、杂项(google perftools相关源码)、mysql数据库、操作系统(UnixWin32两类系统的系统调用程序源码)、流(意义不明)。看起来./src/core子目录对研究源码来说是一个不错的开始。



2 nginx源码文件结构图

Fork me on GitHub