基本信息

编辑推荐
Nginx模块开发领域里程碑之作的升级版,多位权威专家联袂推荐
深度还原Nginx设计思想,揭示快速开发简单高效Nginx模块的技巧;透彻解析Nginx架构,拓展开发高性能Web服务器的思路
内容简介
计算机书籍
本书致力于说明开发Nginx模块的必备知识,第1版发行以后,深受广大读者的喜爱.然而由于Ng,nx功能繁多且性能强大,以致必须了解的基本技能也很庞杂,而第1版成书匆忙,缺失了几个进阶的技巧描述,因此第2版在此基础上进行了完善。
书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了女口何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发—个功能复杂的模块所需要了解的各种知识,并对内存池的实现细节及TCP协议进行了详细介绍;接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧,此外,还新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容,相信通过完善,可进一步帮助读者更好地开发出功能丰富、性能—流的Nginx模块。
作译者
目录
第一部分 Nginx能帮我们做什么
第1章 研究Nginx前的准备工作 2
1.1 Nginx是什么 2
1.2 为什么选择Nginx 5
1.3 准备工作 7
1.3.1 Linux操作系统 7
1.3.2 使用Nginx的必备软件 7
1.3.3 磁盘目录 8
1.3.4 Linux内核参数的优化 9
1.3.5 获取Nginx源码 10
1.4 编译安装Nginx 11
1.5 configure详解 11
1.5.1 configure的命令参数 11
1.5.2 configure执行流程 18
1.5.3 configure生成的文件 21
1.6 Nginx的命令行控制 23
1.7 小结 27
第2章 Nginx的配置 28
2.1 运行中的Nginx进程间的关系 28
前言
自第1版发行以来,笔者很欣慰得到了广大读者的认可。本书一直致力于说明开发Nginx模块的必备知识,然而由于Nginx功能繁多且性能强大,以致必须要了解的基本技能也很庞杂,而第1版成书匆忙,缺失了几个进阶的技巧描述(例如如何使用变量、slab共享内存等),因此决定在第1版的基础上进一步完善。
事实上,我们总能在nginx.conf配置文件中看到各种带着$符号的变量,只要修改带着变量的这一行行配置,就可以不用编译、部署而使得Nginx具备新功能,这些支持变量的Nginx模块提供了极为灵活的功能,第2版通过新增的第15章详细介绍了如何在模块中支持HTTP变量,包括如何在代码中使用其他Nginx模块提供的变量,以及如何定义新的变量供nginx.conf和其他第三方模块使用等。第16章介绍了slab共享内存,这是一套适用于小块内存快速分配释放的内存管理方式,它非常高效,分配与释放速度都是以纳秒计算的,常用于多个worker进程之间的通信,这比第14章介绍的原始的共享内存通信方式要先进很多。第16章不仅详细介绍了它的实现方式,也探讨了它的优缺点,比如,如果模块间要共享的单个对象常常要消耗数KB的空间,这时就需要修改它的实现(例如增大定义的slab页大小),以避免内存的浪费等。
Nginx内存池在第1版中只是简单带过,第2版中新增了8.7节介绍了内存池的实现细节,以帮助读者用好最基础的内存池功能。
此外,很多读者反馈需要结合TCP来谈谈Nginx,因此在9.10节中笔者试图在不陷入Linux内核细节的情况下,简要介绍了TCP以清晰了解Nginx的事件框架,了解Nginx的高并发能力。
这一版新增的第15章的样例代码可以从http://nginx.taohui.org.cn站点上下载。
因笔者工作繁忙,以致第2版拖稿严重,读者的邮件也无法及时回复,非常抱歉。从这版开始会把曾经的回复整理后放在网站上,想必这比回复邮件要更有效率些。
读者对象
本书适合以下读者阅读。
对Nginx及如何将它搭建成一个高性能的Web服务器感兴趣的读者。
希望通过开发特定的HTTP模块实现高性能Web服务器的读者。
希望了解Nginx的架构设计,学习其怎样充分使用服务器上的硬件资源的读者。
了解如何快速定位、修复Nginx中深层次Bug的读者。
希望利用Nginx提供的框架,设计出任何基于TCP的、无阻塞的、易于扩展的服务器的读者。
背景知识
如果仅希望了解怎样使用已有的Nginx功能搭建服务器,那么阅读本书不需要什么先决条件。但如果希望通过阅读本书的第二、第三两部分,来学习Nginx的模块开发和架构设计技巧时,则必须了解C语言的基本语法。在阅读本书第三部分时,需要读者对TCP有一个基本的了解,同时对Linux操作系统也应该有简单的了解。
如何阅读本书
我很希望将本书写成一本“step by step”式(循序渐进式)的书籍,因为这样最能节省读者的时间,然而,由于3个主要写作目的想解决的问题都不是那么简单,所以这本书只能做一个折中的处理。
在第一部分的前两章中,将只探讨如何使用Nginx这一个问题。阅读这一部分的读者不需要了解C语言,就可以学习如何部署Nginx,学习如何向其中添加各种官方、第三方的功能模块,如何通过修改配置文件来更改Nginx及各模块的功能,如何修改Linux操作系统上的参数来优化服务器性能,最终向用户提供企业级的Web服务器。这一部分介绍配置项的方式,更偏重于领着对Nginx还比较陌生的读者熟悉它,通过了解几个基本Nginx模块的配置修改方式,进而使读者可以通过查询官网、第三方网站来了解如何使用所有Nginx模块的用法。
在第二部分的第3章~第7章中,都是以例子来介绍HTTP模块的开发方式的,这里有些接近于“step by step”的学习方式,我在写作这一部分时,会通过循序渐进的方式使读者能够快速上手,同时会穿插着介绍其常见用法的基本原理。
媒体评论
——阿里云飞天事业部研究员 褚霸
Nginx自面世以来,就以高性能的Web服务器著称,然而由于功能强大,插件结构比较复杂,也使众多初学者很难快速入门。为了让广大读者了解Nginx的全貌并迅速投入相关的开发和运维工作中,本书作者通过图文并茂的方式由浅入深地向读者揭开了Nginx的面纱,先从Nginx服务器的配置入手,再到开发简单的HTTP Server,最后介绍Nginx的内存分配原理,既剖析了Nginx,又对如何进行高性能服务器编程进行了很好地阐述,相信对各个层次的读者都有很大的帮助,感谢陶辉!
——阿里巴巴集团核心系统部资深专家 伯瑜
Nginx作为一款面向性能设计的HTTP服务器,不但在稳定性和性能方面相当出众,而且它模块化的设计让其具有异常灵活的扩展性。本书的作者,通过大量的示例和经验,介绍了Nginx的设计思路和相关编程技巧,以及如何开发Nginx模块。看完这本书,你不但能对Nginx有一个全面了解,更重要的是可以学到Nginx的设计思路和理念,这对于任何一个想在软件设计上有所提高的程序员来说都是非常有价值的。
——龆壳网站站长 陈皓