深入理解Nginx:模块开发与架构解析
;
副标题:无;
作者: 陶辉;
内容简介:
前言
为什么要写这本书
当我试图在产品的关键位置设计一个高性能Web服务器时,我选择使用成熟的Nginx。选择它的理由为:首先,它对服务器性能上的挖掘已经达到了很高水平,它能尽量使不同的硬件(包括网卡、硬盘、不同的CPU核心)并发运行,同时软件中又没有阻塞进程使之睡眠的代码,从性能上来说,它可以挑战任何服务器。其次,完全基于事件驱动的服务器开发效率往往很不理想,它们要处理的事件过于底层化、细节化,这使得各功能模块无法聚焦于业务,最终产品的功能都较为单一,不会有丰富的可选功能。但Nginx却不然,由于它在软件架构上具有优秀的设计,使得Nginx完全由许多简单的模块构成,各模块(特别是HTTP模块)不用介入底层细节,在尽享分阶段、无阻塞的事件驱动架构下,可以专注于业务功能的实现,这样最终为Nginx带来了大量的官方、第三方的功能模块,使得功能同样强大的Nginx在产品核心位置上足以担当重任,经受住海量请求的考验。
当Nginx已有模块提供的功能不能完全实现我的所有业务需求时,我可以在Nginx的后端再搭建一个实现了缺失功能的非Nginx服务器,将Nginx无法实现的请求反向代理到这台服务器上处理。但这样也有一定的弊端,首先增大了处理请求的开销,其次后端服务器的设计仍然制约着总体性能(它依然需要解决Nginx解决过的无阻塞问题,那样才能像Nginx一样高效),这样做仅适用于对性能要求不高的场景。唯有开发一个实现了所需功能的自定义Nginx模块嵌入到Nginx代码中,才能让自己的业务像Nginx一样充分挖掘服务器的硬件资源,及时地响应百万级别的并发TCP连接。
当我在开发Nginx模块之前,试图在市面上找到一本关于Nginx模块开发的书籍(无论是中文还是英文)时却一无所获。我只能找到如何使用Nginx及其已有模块的书籍。为了开发Nginx模块,我只能通
目录预览:
深入理解Nginx:模块开发与架构解析
前言
为什么要写这本书
读者对象
背景知识
如何阅读本书
勘误和支持
致谢
第一部分 Nginx能帮我们做什么
第1章 研究Nginx前的准备工作
1.1 Nginx是什么
1.2 为什么选择Nginx
1.3 准备工作
1.4 编译安装Nginx
1.5 configure详解
1.6 Nginx的命令行控制
1.7 小结
第2章 Nginx的配置
2.1 运行中的Nginx进程间的关系
2.2 Nginx配置的通用语法
2.3 Nginx服务的基本配置
2.4 用HTTP核心模块配置一个静态Web服务器
2.5 用HTTP proxy module配置一个反向代理服务器
2.6 小结
第二部分 如何编写HTTP模块
第3章 开发一个简单的HTTP模块
3.1 如何调用HTTP模块
3.2 准备工作
3.3 如何将自己的HTTP模块编译进Nginx
3.4 HTTP模块的数据结构
3.5 定义自己的HTTP模块
3.6 处理用户请求
3.7 发送响应
3.8 将磁盘文件作为包体发送
3.9 用C++语言编写HTTP模块
........