文章概述:

  1. 源码之简介
  2. 源码之目录介绍
  3. 参考文献

一、 nginx源码之简介

      Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。

     代码完全用c语言编写。我对于其中它对内存的分配、module框架的构建以及http实现这几块非常的感兴趣。

     由于自己的C语言相当的水,所以边看源代码变学习也是个不错的过程。

 

二、 nginx之目录的介绍

    下载nginx源码之后,解压之后,根目录下有几个子目录和几个文件,最重要的子目录是auto和src,最重要的文件是configure脚本,不同于绝大多数的开源代码,nginx的 configure脚本是作者手工编写的,没有使用autoconf之类的工具去自动生成,configure脚本会引用auto目录下面的脚本文件来干活。

    对于nginx分析,

    configure作为一个总驱动,调用这些脚本去生成版本信息头文件、默认被包含的模块的声明代码和Makefile文件,版本信息头文件 (ngx_auto_config.h,ngx_auto_headers.h)和默认被包含的模块的声明代码(ngx_modules.c)被放置在新 创建的objs目录下。要注意的是,这几个生成的文件和src下面的源代码一样重要。要运行一下 ./configure 在目录文件下会得到一个objs,这个文件夹也是相当的重要,主要包含了Makefile文件和nginx所有模块的ngx_module.c 文件

 

nginx 官网yum源不可用 nginx源码_nginx

  对于auto目录

  configure脚本会引用auto目录下面的脚本文件来干活。根据不同的用途,auto目录下面的脚本各司其职,有检查编译器版本的,有检查操作系统版本的,有检查标准库版本的,有检查模块依赖情况的,有关于安装的,有关于初始化的,有关于多线程检查的等等。

 

  对于src目录,这个是源码存放的地方,同时也是重点。

src/core存放着主干部分、基础数据结构和基础设施的源码,main函数在src/core/nginx.c中,这是分析源码的一个很好的起点。

src/event存放着事件驱动模型和相关模块的源码。

src/http存放着http server和相关模块的源码。

src/mail存放着邮件代理和相关模块的源码。

src/misc存放着C++兼容性测试和google perftools模块的源码。

src/os存放着依赖于操作系统实现的源码,nginx启动过程中最重要的master和workers创建代码就在这个目录下