搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
深入理解Nginx:模块开发与架构解析:modules development and architecture resolving
0.00    
图书来源: 浙江图书馆(由图书馆配书)
  • 配送范围:
    全国(除港澳台地区)
  • ISBN:
    9787111526254
  • 作      者:
    陶辉著
  • 出 版 社 :
    机械工业出版社
  • 出版日期:
    2016
收藏
编辑推荐

  书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了如何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发一个功能复杂的模块所需要了解的各种知识,并对内存池的实现细节及TCP协议进行了详细介绍;接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧,此外,还新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容,相信通过完善,可进一步帮助读者更好地开发出功能丰富、性能一流的Nginx模块。

展开
作者简介

  陶辉,毕业于西安交通大学计算机科学与技术专业,曾就职于华为中央软件部、腾讯QQ空间、思科中国CRDC等公司,目前在阿里巴巴云计算公司的飞天团队工作,研究方向为介于Iaas和Paas间的弹性计算,多年以来专注于Nginx的定制化应用,对Nginx的设计与特性有深刻认识,实战经验丰富,编写过许多优秀的Nginx模块并应用于企业级产品中,同时撰写了大量关于Nginx的技术文章。擅长Linux下高性能服务器的开发,以及分布式环境下海量数据存储的设计开发。

展开
内容介绍

  本书致力于说明开发Nginx模块的必备知识,第1版发行以后,深受广大读者的喜爱。然而由于Nginx功能繁多且性能强大,以致必须了解的基本技能也很庞杂,而第1版成书匆忙,缺失了几个进阶的技巧描述,因此第2版在此基础上进行了完善。书中首先通过介绍官方Nginx的基本用法和配置规则,帮助读者了解一般Nginx模块的用法,然后重点介绍了如何开发HTTP模块(含HTTP过滤模块)来得到定制化的Nginx,其中包括开发一个功能复杂的模块所需要了解的各种知识,并对内存池的实现细节及TCP协议进行了详细介绍;接着,综合Nginx框架代码分析了Nginx架构的设计理念和技巧,此外,还新增了如何在模块中支持HTTP变量,以及与slab共享内存等相关的内容,相信通过完善,可进一步帮助读者更好地开发出功能丰富、性能一流的Nginx模块。

  本书包括四大部分:Nginx能帮我做什么;如何编写一个定制的httpmodule;深入Nginx;实战。第一部分针对初级读者,介绍Nginx关于获取编译运行的基本知识。第二部分针对中级读者,以一个例子为主线,告诉读者如何开发一个http模块,这部分读者不需要深入了解Nginx的细节,只需要知道如何实现一个基本的http模块。第三部分针对高级读者,这是本书的重点,彻底解析Nginx架构,深入探讨Nginx各种设计的目的与意义,并对第二部分使用到的一些特性进行代码设计实现上的探索。读者读完本部分,会对整个Nginx架构有清晰的认识,可以编写各种模块(不局限于http模块)插入到Nginx中,从而定制自己的Nginx。第四部分针对中高级读者,以Tengine的开源模块为例,帮助读者从实战角度理解第二、三部分描述的内容。

展开
精彩书评

  Nginx一直是高性能服务器的工程典范,它充分利用了操作系统和硬件提供的特性,涉及的知识面非常多,要领略到真正的风景需要艰难的跋涉,本书是很好的向导,一路陪伴着,适时地告诉你哪里是风景,哪里是坑,让你快乐地走完旅程。

  ——阿里云飞天事业部研究员 褚霸

  Nginx自面世以来,就以高性能的Web服务器著称,然而由于功能强大,插件结构比较复杂,也使众多初学者很难快速入门。为了让广大读者了解Nginx的全貌并迅速投入相关的开发和运维工作中,本书作者通过图文并茂的方式由浅入深地向读者揭开了Nginx的面纱,先从Nginx服务器的配置入手,再到开发简单的HTTP Server,最后介绍Nginx的内存分配原理,既剖析了Nginx,又对如何进行高性能服务器编程进行了很好地阐述,相信对各个层次的读者都有很大的帮助,感谢陶辉!

  ——阿里巴巴集团核心系统部资深专家 伯瑜

  Nginx作为一款面向性能设计的HTTP服务器,不但在稳定性和性能方面相当出众,而且它模块化的设计让其具有异常灵活的扩展性。本书的作者,通过大量的示例和经验,介绍了Nginx的设计思路和相关编程技巧,以及如何开发Nginx模块。看完这本书,你不但能对Nginx有一个全面了解,更重要的是可以学到Nginx的设计思路和理念,这对于任何一个想在软件设计上有所提高的程序员来说都是非常有价值的。

  ——酷壳网站站长 陈皓

展开
精彩书摘

  Nginx一直是高性能服务器的工程典范,它充分利用了操作系统和硬件提供的特性,涉及的知识面非常多,要领略到真正的风景需要艰难的跋涉,本书是很好的向导,一路陪伴着,适时地告诉你哪里是风景,哪里是坑,让你快乐地走完旅程。

  ——阿里云飞天事业部研究员 褚霸

  Nginx自面世以来,就以高性能的Web服务器著称,然而由于功能强大,插件结构比较复杂,也使众多初学者很难快速入门。为了让广大读者了解Nginx的全貌并迅速投入相关的开发和运维工作中,本书作者通过图文并茂的方式由浅入深地向读者揭开了Nginx的面纱,先从Nginx服务器的配置入手,再到开发简单的HTTP Server,最后介绍Nginx的内存分配原理,既剖析了Nginx,又对如何进行高性能服务器编程进行了很好地阐述,相信对各个层次的读者都有很大的帮助,感谢陶辉!

  ——阿里巴巴集团核心系统部资深专家 伯瑜

  Nginx作为一款面向性能设计的HTTP服务器,不但在稳定性和性能方面相当出众,而且它模块化的设计让其具有异常灵活的扩展性。本书的作者,通过大量的示例和经验,介绍了Nginx的设计思路和相关编程技巧,以及如何开发Nginx模块。看完这本书,你不但能对Nginx有一个全面了解,更重要的是可以学到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 conf?igure详解  11

1.5.1 conf?igure的命令参数  11

1.5.2 conf?igure执行流程  18

1.5.3 conf?igure生成的文件  21

1.6 Nginx的命令行控制  23

1.7 小结  27

第2章 Nginx的配置  28

2.1 运行中的Nginx进程间的关系  28

2.2 Nginx配置的通用语法  31

2.2.1 块配置项  31

2.2.2 配置项的语法格式  32

2.2.3 配置项的注释  33

2.2.4 配置项的单位  33

2.2.5 在配置中使用变量  33

2.3 Nginx服务的基本配置  34

2.3.1 用于调试进程和定位问题的配置项  34

2.3.2 正常运行的配置项  36

2.3.3 优化性能的配置项  37

2.3.4 事件类配置项  39

2.4 用HTTP核心模块配置一个静态Web服务器  40

2.4.1 虚拟主机与请求的分发  41

2.4.2 文件路径的定义  45

2.4.3 内存及磁盘资源的分配  47

2.4.4 网络连接的设置  49

2.4.5 MIME类型的设置  52

2.4.6 对客户端请求的限制  53

2.4.7 文件操作的优化  54

2.4.8 对客户端请求的特殊处理  56

2.4.9 ngx_http_core_module模块提供的变量  57

2.5 用HTTP proxy module配置一个反向代理服务器  59

2.5.1 负载均衡的基本配置  61

2.5.2 反向代理的基本配置  63

2.6 小结  66

第二部分 如何编写HTTP模块

第3章 开发一个简单的HTTP模块  68

3.1 如何调用HTTP模块  68

3.2 准备工作  70

3.2.1 整型的封装  71

3.2.2 ngx_str_t数据结构  71

3.2.3 ngx_list_t数据结构  71

3.2.4 ngx_table_elt_t数据结构  75

3.2.5 ngx_buf_t数据结构  75

3.2.6 ngx_chain_t数据结构  77

3.3 如何将自己的HTTP模块编译进Nginx  77

3.3.1 conf?ig文件的写法  77

3.3.2 利用conf?igure脚本将定制的模块加入到Nginx中  78

3.3.3 直接修改Makef?ile文件  81

3.4 HTTP模块的数据结构  82

3.5 定义自己的HTTP模块  86

3.6 处理用户请求  89

3.6.1 处理方法的返回值  89

3.6.2 获取URI和参数  92

3.6.3 获取HTTP头部  94

3.6.4 获取HTTP包体  97

3.7 发送响应  99

3.7.1 发送HTTP头部  99

3.7.2 将内存中的字符串作为包体发送  101

3.7.3 经典的“Hello World”示例  102

3.8 将磁盘文件作为包体发送  103

3.8.1 如何发送磁盘中的文件  104

3.8.2 清理文件句柄  106

3.8.3 支持用户多线程下载和断点续传  107

3.9 用C++语言编写HTTP模块  108

3.9.1 编译方式的修改  108

3.9.2 程序中的符号转换  109

3.10 小结  110

第4章 配置、error日志和请求上下文  111

4.1 http配置项的使用场景  111

4.2 怎样使用http配置  113

4.2.1 分配用于保存配置参数的数据结构  113

4.2.2 设定配置项的解析方式  115

4.2.3 使用14种预设方法解析配置项  121

4.2.4 自定义配置项处理方法  131

4.2.5 合并配置项  133

4.3 HTTP配置模型  135

4.3.1 解析HTTP配置的流程  136

4.3.2 HTTP配置模型的内存布局  139

4.3.3 如何合并配置项  142

4.3.4 预设配置项处理方法的工作原理  144

4.4 error日志的用法  145

4.5 请求的上下文  149

4.5.1 上下文与全异步Web服务器的关系  149

4.5.2 如何使用HTTP上下文  151

4.5.3 HTTP框架如何维护上下文结构  152

4.6 小结  153

第5章 访问第三方服务  154

5.1 upstream的使用方式  155

5.1.1 ngx_http_upstream_t结构体  158

5.1.2 设置upstream的限制性参数  159

5.1.3 设置需要访问的第三方服务器地址  160

5.1.4 设置回调方法  161

5.1.5 如何启动upstream机制  161

5.2 回调方法的执行场景  162

5.2.1 create_request回调方法  162

5.2.2 reinit_request回调方法  164

5.2.3 f?inalize_request回调方法  165

……

展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证