- 1、本文档共66页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
nginx 源码分析
nginx 源码分析(1)- 缘起
nginx 是一个开源的高性能web 服务器系统,事件驱动的请求处理方式和极
其苛刻的资源使用方式,使得nginx 成为名副其实的高性能服务器。 nginx 的
源码质量也相当高,作者“家酿”了许多代码,自造了不少轮子,诸如内存池、
缓冲区、字符串、链表、红黑树等经典数据结构,事件驱动模型,http 解析,
各种子处理模块,甚至是自动编译脚本都是作者根据自己的理解写出来的,也正
因为这样,才使得nginx 比其他的web 服务器更加高效。
nginx 的代码相当精巧和紧凑,虽然全部代码仅有10 万行,但功能毫不逊
色于几十万行的apache。不过各个部分之间耦合的比较厉害,很难把其中某个
部分的实现拆出来使用。对于这样一个中大型的复杂系统源码进行分析,是有一
定的难度的,刚开始也很难找到下手的入口,所以做这样的事情就必须首先明确
目标和计划。
最初决定做这件事情是为了给自己一些挑战,让生活更有意思。但看了几天
之后,觉得这件事情不该这么简单看待,这里面有太多吸引人的东西了,值得有
计划的系统学习和分析。首先这个系统中几乎涵盖了实现高性能服务器的各种必
杀技,epoll、kqueue、master-workers、pool、buffer… …,也涵盖了很多
web 服务开发方面的技术,ssi、ssl、proxy、gzip、regex、load balancing、
reconfiguration、hot code swapping… …,还有一些常用的精巧的数据结构
实现,所有的东西很主流;其次是一流的代码组织结构和干净简洁的代码风格,
尤其是整个系统的命名恰到好处,可读性相当高,很kiss,这种风格值得学习
和模仿;第三是通过阅读源码可以感受到作者严谨的作风和卓越的能力,可以给
自己增加动力,树立榜样的力量。
另一方面,要达到这些目标难度很高,必须要制定详细的计划和采取一定有
效的方法。
对于这么大的一个系统,想一口气知晓全部的细节是不可能的,并且nginx
各个部分的实现之间关系紧密, 不可能做到窥一斑而知全身,合适的做法似乎
应该是从main 开始,先了解nginx 的启动过程的顺序,然后进行问题分解,再
逐个重点分析每一个重要的部分。
对每个理解的关键部分进行详细的记录和整理也是很重要的,这也是这个源
码分析日志系列所要完成的任务。
为了更深刻的理解代码实现的关键,修改代码和写一些测试用例是不可避免
的,这就需要搭建一个方便调试的环境,这也比较容易,因为使用的linux 系统
本身就是一个天然的开发调试环境。
个人的能力是有限的,幸运的是互联网上还有一帮同好也在孜孜不倦的做着
同样的事情,与他们的交流会帮助少走一些弯路,也会互相促进,更深入和准确
的理解源码的本实。
开始一次愉快的旅行,go !
nginx 源码分析(2)- 概览
源码分析是一个逐步取精的过程,最开始是一个大概了解的过程,各种认识
不会太深刻,但是把这些真实的感受也记录下来,觉得挺有意思的,可能有些认
识是片面或者是不正确的,但可以通过后面更深入细致的分析过程,不断的纠正
错误和深化理解。源码分析是一个过程,经验是逐步累积起来的,希望文字可以
把这种累积的感觉也准确记录下来。
现在就看看对nginx 源码的第一印象吧。
源码包解压之后,根目录下有几个子目录和几个文件,最重要的子目录是
auto和src,最重要的文件是configure脚本,不同于绝大多数的开源代码,nginx
的configure 脚本是作者手工编写的,没有使用autoconf 之类的工具去自动生
成,configure 脚本会引用auto 目录下面的脚本文件来干活。根据不同的用途,
auto 目录下面的脚本各司其职,有检查编译器版本的,有检查操作系统版本的,
有检查标准库版本的,有检查模块依赖情况的,有关于安装的,有关于初始化的,
有关于多线程检查的等等。configure 作为一个总驱动,调用这些脚本去生成版
本信息头文件、默认被包含的模块的声明代码和Makefile 文件,版本信息头文
件 (ngx_auto_config.h,ngx_auto_headers.h)和默认被包含的模块的声明代码
(ngx_modules.c)被放置在新创建的objs 目录下。要注意的是,这几个生成的文
件和src 下面的源代码一样重要,对于理解源码是不可忽略
您可能关注的文档
- 第01篇oracle.ppt
- 第4讲--窗体——Access的“查询界面”-考勤管理.ppt
- 第十三章 农村土地承包经营权确权登记数据库成果汇交办法-51建库.pdf
- 第二章 3. Python概要介绍 — python tutorial 2.pdf
- 高效团队沟通和管理.ppt
- 第十三章 内容简介_24475.ppt
- 第九章 格拉摩根大学运算本科.pdf
- 日本汉字字体课件.pdf
- 第5章 PowerPoint课件界面及导航1.ppt
- 第10篇 函 数.ppt
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 云南西部沿边高校边境缅甸语人才培养的校政企合作模式探索.docx VIP
- 《固定式钢梯及平台安全要求 第2部分:钢斜梯》GB 4053.2-2009.docx VIP
- 幼小科学衔接视角下家校社协同共育现状及对策研究.pdf VIP
- 2025中国中信金融资产管理股份有限公司甘肃分公司招聘笔试备考题库及答案解析.docx VIP
- 旅游警务服务规范.pdf
- 2025凉山州继续教育公需科目满分答案-深入学xi关于发展新生产力的重要论述.docx VIP
- 第三章 教育目的.ppt VIP
- 乳腺癌脑转移瘤护理查房.pptx VIP
- 眼科专科护理操作风险防范.pptx VIP
- 真菌镜检报告.pptx VIP
文档评论(0)