深入剖析Nginx

高群凯
前言 慕名对Nginx源码进行学习与研究是早在2008年的事情。当时正在为职业规划与未来发展困惑不已,一筹莫展之际不知从哪里得知高性能服务器是一个很有“前途”的努力方向,几经搜索又机缘偶合地得识Lighttpd与Nginx。在逐步了解和熟悉它们的源码后,我开始感到自己的无知与浅薄,发现原来代码也可以写得如此优雅。 我已编著过一本《Lighttpd源码分析》。先解析Lighttpd源码并没有什么特别的原因,只是因为在当时Lighttpd比Nginx要火,应用得也较广;而近几年,凭借专注持续的更新与运作,Nginx后来居上,在全世界的应用仅次于Apache与MicrosoftIIS,而且大有赶超IIS的势头。 Nginx 提供了一个安全、快速并且灵活的Web Server 环境。与其他Web Servers 相比,其主要特点是占有系统资源少、并发能力强、稳定性好,这些都是吸引网站架构人员重点关注以及对其进行广泛应用的巨大优点。然而,对于开发工程师而言,更有吸引力的地方却是Nginx 是怎样做到如此强劲的功能与性能的,这从因特网上存在大量的 Nginx 源码分析的博客文章与论坛帖子可见一斑。 既然互联网上已有大量的 Nginx 源码分析文章,那我现在编写这本《Nginx 源码分析》是否多此一举?我会说不是,毕竟它较为完整地梳理了 Nginx 的相关核心流程。当然,这只是我给出的答案,最终还需要各位读者来回答。我在此阐述一下自己的看法。本书的原始素材是我在最近三四年里地对 Nginx 代码分析时断断续续地所做的笔记,只不过之前写的笔记过细地逐行注释代码,导致文档中充斥大量的代码。而在这次重新整理后,希望能从比较高一点的角度去解析 Nginx,把握全局,搞清楚整体实现原理而不是陷入细节。我个人认为,只要看清楚了 Nginx 整体的实现原理,对于一时半会没有触及到的细节,在真正遇到那…