8.7 小结

本章主要理清了Nginx的设计思路,知道它是如何达到高性能、高可靠性、高可伸缩性、高可修改性等要求的。在此基础上,我们以ngx_cycle_t数据结构为核心,介绍了Nginx框架如何启动、初始化、加载各Nginx模块的代码,以及master进程、worker进程如何在工作循环中运行。对于worker进程来说,它的工作流程更多地体现在具体的模块上。例如,对于HTTP请求来说,worker进程大都是由HTTP模块所占用的,特别是8.5节中提到的ngx_process_events_and_timers方法,这是第9章中事件模块将要讲述的内容,因此,对于worker进程的工作循环,本章并没有做详细的说明。对于master进程,8.6节内容基本上涉及了它在工作循环中执行的所有流程。而对于cache manage和cache loader进程,它们是与文件缓存模块密切相关的,在不使用文件缓存时,这两个进程也不会启动,它们与框架代码没有多少关联,本章只是进行了简单说明。

通过阅读本章的内容,读者应该对Nginx的设计结构有了大致的了解,这样在修改Nginx的源码或者开发一些异常强大且深入的Nginx模块时就可以得心应手了,因为只有在不违反Nginx本身设计原则的前提下才会保留8.2节中所述的优点。同时,本章内容是后续章节的基础,在了解事件模块、HTTP模块、mail模块前,必须对Nginx整个的模块分布、事件驱动、请求的多阶段划分等特点有清晰的认识,这样在阅读后续章节时可以做到事半功倍。