文章概述:nginx
1、 nginx源码之简介服务器
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。数据结构
代码彻底用c语言编写。我对于其中它对内存的分配、module框架的构建以及http实现这几块很是的感兴趣。多线程
因为本身的C语言至关的水,因此边看源代码变学习也是个不错的过程。框架
2、 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 文件学习
对于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建立代码就在这个目录下
3、参考文献:
网址:http://blog.csdn.net/kenbinzhang/article/details/4653202