
前言
在写这本书之前,笔者们专门对源码学习和交流了很长一段时间。因为一个人去坚持自己的目标真的很难,但是一群人去学习,相互鼓励,相互督促,会让学习更高效且更有动力。
当然,学习是为了获取知识、总结学习结果,以便在未来更好地工作。在总结的过程中,大家逐渐有了把这些经验分享出来的想法,以帮助更多想要了解Nginx的人,于是便有了本书。
本书特色
内容丰富:除了Nginx相关的进程、数据结构、配置、HTTP模块、内存等内容,还附带编译脚手架和RTMP模块的详细讲解。通过学习这些内容,读者可以了解模块的构成,开发定制模块。
深入浅出:Nginx源码设计中涉及很多知识,这对入门读者来说有一定的难度。所以本书结合案例分析,让读者更轻松地理解这些庞杂、有难度的知识。
实战讲解:通过关键代码片段以及原理分析进行实战难点讲解。某些代码分析还带有源码调试分析与处理流程图,便于读者动手实战,快速入门。
本书结构
本书共12章,主要内容介绍如下。
第1章介绍Nginx源码与编译安装,第2章介绍Nginx基础架构与设计理念,这两章从Nginx的优势、源码结构、进程模型等几个方面概述Nginx。
第3章介绍Nginx的内存管理,从内存池、共享内存两方面介绍Nginx内存管理的相关内容。
第4章介绍Nginx的基本数据结构,包括字符串、数组、链表、队列、散列、红黑树、基数树的数据结构和算法。
第5章解析Nginx的配置文件,通过对main配置块、events配置块与http配置块的详细介绍,概述Nginx配置解析的全过程。
第6章介绍Nginx进程机制,通过进程模式、Master进程、Worker进程以及进程间通信机制,完整介绍Nginx进程的管理。
第7章介绍HTTP模块,通过服务初始化、请求解析、HTTP请求处理以及HTTP请求响应,详细介绍HTTP模块的处理过程。
第8章介绍Upstream机制,对Upstream初始化、上下游连接建立、长连接、FastCGI模块做了详细介绍。
第9章介绍Event模块实现,内容涉及Nginx事件模型的文件事件、时间事件、进程池、连接池等事件处理流程。
第10章介绍Nginx的负载均衡、限流、日志等模块的实现。
第11章介绍跨平台实现,对Nginx的configure编译文件、跨平台原子操作和锁进行详细介绍。
第12章介绍基于Nginx的RTMP直播服务实现。
预备知识
读者在学习本书之前可以对以下知识进行初步了解,以便更好地学习与理解本书。
- C/C++基础:首先要掌握C/C++语言基础,这样有助于理解源码语意、语法以及相关的业务逻辑。
- GDB调试:本书中的一些代码片段是采用GDB进行调试的,因此了解GDB调试工具有助于对Nginx的进程进行调试。
- Nginx基础使用:本书基于Nginx 1.160版本编写,如果你对Nginx的一些使用已经了解,学习起来会更容易。
- HTTP及其网络编程基础知识。
勘误与交流
由于笔者写作水平和写作时间有限,文中难免有疏漏与笔误,欢迎大家通过电子邮件等方式批评指正。
- 笔者邮箱:9641354@qq.com。
- 笔者博客:https://segmentfault.com/u/php7internal。
致谢
感谢学而思网校技术负责人陈雷老师在本书写作过程中给予的帮助和支持。
感谢出版社给了笔者一次和大家分享技术、交流学习的机会,感谢高婧雅编辑在本书出版过程中的辛勤付出。
赵禹
2021年4月12日