深入剖析Nginx

出版社:人民邮电出版社
出版日期:2013-5-1
ISBN:9787115307620
作者:高群凯
页数:334页

章节摘录

版权页:   插图:   对一个客户端请求的处理,终于衔接到Nginx的Handler模块来了,各个Handler模块的处理在前面章节已经描述过,所以这里不再多讲。对于一个访问静态页面的GET类型请求,最终会被ngx—http static—module模块的ngX_http—static—handler()函数捕获,该函数组织待响应的数据,然后调用ngx http—output filter()经过Nginx过滤链后将数据发送到客户端,此时一个请求的处理与响应也就完成,所以当回到ngx—http_process—request()i函数的最末,调用到函数ngX http—run posted_requests()内时,因为c—>destroyed为真而直接退出。下一节就具体来看http数据响应的内部逻辑过程。 http响应消息也分为head头部和body主体,和请求消息一致,也是头部信息先发送,然后才是主体信息。本节仍以简单的GET请求静态页面为例,来看看Nginx如何对客户端做出数据响应。 前面提到,简单的GET请求静态页面最终会被ngx http static module模块实际处理,执行的函数为ngx http static handler0。该函数首先要做的当然是找到请求静态页面所对应的磁盘文件,通过组合当前location配置的根目录与GET请求里的绝对URl即可得到该磁盘文件的绝对路径1。 接着通过绝对路径打开该磁盘文件,并且通过文件属性来设置相关响应头,比如:通过文件大小来设置Content—Length响应头(这里还只是设置对应的字段值,并非创建实际的响应头,下同),告诉客户端接收数据的长度;通过文件修改时间来设置Last—Modified响应头,那么客户端下次再请求该静态文件时可带上该时间戳,那时Nginx就有可能直接返回304状态码,让客户端直接使用本地缓存,从而提高性能;等等。发送响应体需要一些内存资源,这会在发送响应头以前分配好,因为如果内存申请失败可提前异常返回,避免可能出现响应头已经发送出去后却发现发送响应体需要的内存资源没法成功申请的情况。当然,发送响应头还需要经过Nginx的过滤链。逐步顺链调用下去,过滤链上的回调函数可能会对响应头数据进行检测、截获、新增、修改和删除等操作,不管怎样,一般情况下,执行流程会走到过滤链最末端的两个函数内。

名人推荐

本书作者从实际情况出发,以当下新的系统版本和软件版本为例,从最开始的搭建调试环境准备到Nginx的源码工作机制一一讲解。本书还针对一些常用网站的需求,对Nginx常用的功能模块进行修改以符合实际需要。从我的职业角度来看,本书特别适合追求高性能、高标准的高级运维工程师。 ——刘鑫 ChinaUnix 版主,《高性能网站构建实战》作者 Nglnx是得到国内外各大网站切实应用、经过实践证明的优秀项目。通过本书,你可以系统地学习和解读NginX源码。这不仅是提高个人技能水平的最好学习方式,也是给自己职业生涯添筹加码的最佳有效途径。 ——杨晖 深圳市闻道移动科技有限公司,技术总监 目前Nginx的应用非常广泛,本书从源码角度对NglnX核心机制进行了系统的剖析和梳理。不论是软件开发工程师,还是运维工程师,都非常值得一读。 ——贺剑 Cisco Systems公司,工程师 得益于该书对Nginx的系统介绍,我们项目小组成员快速地了解了Nginx内部原理,保障了项目的顺利进行。也向你郑重推荐本书。 ——刘杰 华为技术有限公司,项目经理 除了与Nginx本身相关的逻辑之外,书中还结合作者个人经验探讨了软件调试、数据结构、I/O模型、TCP/HTTP协议等多个重要的方面,令人受益匪浅。 ——蔡洲 LogicMonitor公司,工程师

媒体关注与评论

本书作者长期在ChinaUnix论坛C/C++版活跃,任职版主以来乐于助人,技术功底深厚。他结合自己多年应用Nginx和解读Nginx源码的实战经验,采用鞭辟入里的写作风格,用丰富的图解和示例全面详细阐释了Nginx是什么,有什么功能特性,内部如何运作,具体如何实现等。相信本书的出版一定会得到广大Nginx用户和爱好者的欢迎。—— China Unix社区本书作者从实际情况出发,以当下新的系统版本和软件版本为例,从最开始的搭建调试环境准备到Nginx的源码工作机制一一讲解。本书还针对一些常用网站的需求,对Nginx常用的功能模块进行修改以符合实际需要。从我的职业角度来看,本书特别适合追求高性能、高标准的高级运维工程师。——刘鑫 ChinaUnix版主,《高性能网站构建实战》作者Nginx是得到国内外各大网站切实应用、经过实践证明的优秀项目。通过本书,你可以系统地学习和解读Nginx源码。这不仅是提高个人技能水平的最好学习方式,也是给自己职业生涯添筹加码的最佳有效途径。——杨晖 深圳市闻道移动科技有限公司,技术总监目前Nginx的应用非常广泛,本书从源码角度对Nginx核心机制进行了系统的剖析和梳理。不论是软件开发工程师,还是运维工程师,都非常值得一读。——贺剑 Cisco Systems公司,工程师得益于该书对Nginx的系统介绍,我们项目小组成员快速地了解了Nginx内部原理,保障了项目的顺利进行。也向你郑重推荐本书。——刘杰 华为技术有限公司,项目经理除了与Nginx本身相关的逻辑之外,书中还结合作者个人经验探讨了软件调试、数据结构、I/O模型、TCP/HTTP协议等多个重要的方面,令人受益匪浅。——蔡洲 LogicMonitor公司,工程师

内容概要

高群凯,重庆大学计算机学院硕士毕业,接触Linux等自由/开源软件已有11年,在技术领域的兴趣主要包括Linux、高性能服务(Web服务如Lighttpd、Nginx、Apache等;数据库服务如Mongodb等),以及x86、MIPS(Cavium、RMI、Tilera)等。一直在深信服科技有限公司工作,专职从事Linux相关研究,对系统底层性能优化、内核oops宕机以及x86疑难问题排查等相关技术有一些研究和积累。曾著有《Lighttpd源码分析》一书。个人博客:http://lenky.info/。

书籍目录

目 录
第1章 源码分析的准备工作
1
1.1 主要特性
1
1.2 源码下载
4
1.3 源码目录结构
5
1.4 源码分析工具
6
1.5 测试辅助工具
7
1.6 编译与执行
8
1.7 其他准备
9
第2章 跟踪与调试
10
2.1 利用gdb调试
10
2.1.1 绑定Nginx到gdb
10
2.1.2 gdb的watch指令
13
2.1.3 Nginx对gdb的支持
14
2.1.4 宏
16
2.1.5 cgdb
18
2.2 利用日志信息跟踪Nginx
19
2.3 利用strace/pstack调试Nginx
21
2.4 获得Nginx程序完整执行流程
23
2.5 加桩调试
29
2.6 特殊应用逻辑的调试
31
第3章 进程模型
35
3.1 整体架构
35
3.2 核心进程模型
36
3.2.1 监控进程
36
3.2.2 工作进程
38
3.3 Cache进程模型
38
3.3.1 Cache管理进程
40
3.3.2 Cache加载进程
42
3.4 进程通信
43
3.5 共享内存
46
3.6 slab机制
50
3.7 信号处理
59
3.7.1 准备工作
60
3.7.2 设置生效
61
3.7.3 处理实例
62
第4章 数据结构
65
4.1 内存池
65
4.2 Hash
72
4.3 Radix tree
77
第5章 配置解析
81
5.1 配置文件格式
81
5.2 配置项目解析准备
84
5.3 配置文件解析流程
86
5.4 配置信息组织结构
95
5.5 配置信息的继承
108
第6章 模块综述
113
6.1 Handler模块
116
6.2 Filter模块
124
6.3 Upstream模块
127
6.4 Load-balance模块
132
第7章 事件管理机制
134
7.1 I/O多路复用模型
134
7.2 epoll模型
138
7.3 事件处理
144
7.4 负载均衡
146
7.4.1 客户端请求均衡
146
7.4.2 多核绑定
152
7.5 超时管理
153
第8章 变量机制
160
8.1 初识变量
160
8.2 支撑机制
163
8.3 脚本引擎
174
8.4 执行顺序
180
第9章 请求处理与响应
182
9.1 创建监听套接口
182
9.2 创建连接套接口
188
9.3 请求处理
191
9.4 数据响应
197
9.5 子请求
201
9.6 连接关闭
214
9.6.1 keepalive机制
217
9.6.2 延迟关闭机制
221
第10章 请求定位
228
10.1 Location的生成
228
10.2 Location的整理
232
10.3 Server的定位
239
10.4 Location的定位与使用
242
10.5 未命名location的使用
244
10.6 try_files指令
248
第11章 动态页面请求处理
252
11.1 测试环境
252
11.2 客户端发起Php请求
255
11.3 请求转发
259
11.3.1 建立连接
261
11.3.2 发送请求数据
265
11.4 数据响应
267
11.4.1 接收并处理Fastcgi响应头
267
11.4.2 接收并发送Fastcgi响应体
273
第12章 过滤模块
283
12.1 ngx_http_not_modified_filter_module
283
12.1.1 304状态码
283
12.1.2 412状态码
285
12.2 ngx_http_headers_filter_module
288
12.2.1 HTTP缓存功能的扩展
289
12.2.2 增加自定义响应头
290
12.3 ngx_http_gzip_filter_module
291
12.4 ngx_http_range_filter_module
293
第13章 负载均衡
299
13.1 负载均衡策略
300
13.2 加权轮询
301
13.2.1 准备工作
301
13.2.2 选择后端服务器
304
13.2.3 后端服务器权值计算
307
13.2.4 释放后端服务器
307
13.3 IP哈希
310
选择后端服务器
310
13.4 两种策略对比
313
第14章 访问控制
315
14.1 禁止指定IP访问
315
14.2 密码认证访问
318
14.3 其他访问控制措施
327
14.3.1 禁止用户通过IP地址访问服务器
327
14.3.2 禁止对某目录或某类文件的访问
327
附录A
329
附录B
332
附录C
333

编辑推荐

源码之前,了无秘密。深入剖析Nginx是资深工程师多年研读代码、精心打磨之作。得到了ChinaUnix社区、运维专家、一线工程师强烈推荐。本书从源码剖析角度深入学习Nginx,对于了解其使用机理和二次开发都有帮助。帮助读者知其然且知其所以然。深入剖析Nginx的作者具有较为丰富的源码剖析和写作经验。深入剖析Nginx部分内容在作者博客,ChinaUnix等社区发布后,浏览下载累计达3000人次,也获得读者的好评。

作者简介

Nginx是一款功能强大的高性能Web和反向代理服务器,最初由俄罗斯程序员Igor Sysoev开发,而当前由Igor Sysoev领导的专业公司Nginx, Inc.进行持续的维护与更新。
Nginx可以在大多数UNIX或类UNIX系统上编译运行,比如FreeBSD、Solaris、Linux等,并且官方还提供Windows下的可执行版本。目前,Nginx在Netflix 、Wordpress.com、新浪、网易、腾讯、豆瓣等国内外众多知名网站中得到应用。
从源码剖析的角度出发,是程序员常用的学习和提高方法。本书是作者多年研读Nginx源码、深入思考和不断结合实践的结晶。本书重点在于通过剖析Nginx的源码,探究其功能结构及其内部实现原理。
本书内容包括:
◎ 剖析Nginx源码前的准备工作;
◎ 跟踪和调试的方法;
◎ Nginx的整体架构和进程模型;
◎ Nginx的数据结构,包括内存池、Hash 和Radixtree ;
◎ Nginx的配置指令;
◎ Nginx主要功能模块,包括Handler 、Filter 、Load-balance等;
◎ I/O多路复用模型和I/O事件处理等;
◎ 完整的客户端请求分析,包括请求处理与响应、请求定位、动态页面请求处理等;
◎ Filter模块实例;
◎ 负载均衡策略,包括加权轮询策略和IP哈希策略;
◎ Nginx的编译模块、运行配置。
本书适合系统程序员、软件开发工程师、Nginx高级运维工程师阅读参考,对于有志从事相关工作的IT专业学生,更是不可多得的学习资料。


 深入剖析Nginx下载 更多精彩书评



发布书评

 
 


精彩书评 (总计2条)

  •     好吧,如果你不自己去看代码,测试,实现,只看书的话,能够学到的也会很快忘记吧。这本书为阅读代码提供了不错的线索,如果哪里看不懂,可以直接跳到相应章节作为参考,作者写得也很认真。当然,也仅限于代码,至于更高层的抽象还需要自己去理解。
  •     源码之前,了无秘密!本书是资深工程师多年研读代码、精心打磨之作。得到了ChinaUnix社区、运维专家、一线工程师强烈推荐 本书作者长期在ChinaUnix论坛C/C++版活跃,任职版主以来乐于助人,技术功底深厚。他结合自己多年应用Nginx和解读Nginx源码的实战经验,采用鞭辟入里的写作风格,用丰富的图解和示例全面详细阐释了Nginx是什么,有什么功能特性,内部如何运作,具体如何实现等。相信本书的出版一定会得到广大Nginx用户和爱好者的欢迎。 —— China Unix社区 本书作者从实际情况出发,以当下新的系统版本和软件版本为例,从最开始的搭建调试环境准备到Nginx的源码工作机制一一讲解。本书还针对一些常用网站的需求,对Nginx常用的功能模块进行修改以符合实际需要。从我的职业角度来看,本书特别适合追求高性能、高标准的高级运维工程师。 ——刘鑫 ChinaUnix版主,《高性能网站构建实战》作者 Nginx是得到国内外各大网站切实应用、经过实践证明的优秀项目。通过本书,你可以系统地学习和解读Nginx源码。这不仅是提高个人技能水平的最好学习方式,也是给自己职业生涯添筹加码的最佳有效途径。 ——杨晖 深圳市闻道移动科技有限公司,技术总监 目前Nginx的应用非常广泛,本书从源码角度对Nginx核心机制进行了系统的剖析和梳理。不论是软件开发工程师,还是运维工程师,都非常值得一读。 ——贺剑 Cisco Systems公司,工程师 得益于该书对Nginx的系统介绍,我们项目小组成员快速地了解了Nginx内部原理,保障了项目的顺利进行。也向你郑重推荐本书。 ——刘杰 华为技术有限公司,项目经理 除了与Nginx本身相关的逻辑之外,书中还结合作者个人经验探讨了软件调试、数据结构、I/O模型、TCP/HTTP协议等多个重要的方面,令人受益匪浅。 ——蔡洲 LogicMonitor公司,工程师

精彩短评 (总计8条)

  •     不如直接看源码来的直接
  •     这本书非常好,建议想了解Nginx的学习学习
  •     这本书好像校正的不怎么好,有几个明显的错误。而且讲的也不是很细。个人感受。等读完再追加评论。
  •     看目录感觉没有<深入理解nginx>讲的好啊,看看吧.... 看完后确实和直觉一致;祥略不当,轻重不当,什么都点到了,什么都没有真正说透。一本书也就像两个人聊天一样说了说nginx的各个方面。 如果你自己不理解nginx,根本不知道这哥们在说什么;如果你理解了nginx,这哥们说的又没什么用了。 想比较<深入理解nginx>好的多了,重点全面而突出,也足够详细。
  •     概念大致了解了,代码细节没花太多精力去看,后续再读吧,总体来说还挺不错的。先用Python写一个玩玩。
  •     代码是之前的版本,很老了,读了一遍,算入门级别的吧
  •     单单配置解析这一章,就值得购买!无意中发现作者是深信服同事!大牛,膜拜!
  •     挺喜欢这本书的写作风格,从另外一个角度(作者有运维经验)来分析Nginx。书的开头简单介绍了源码结构,需要涉及的工具(si、gdb之类)介绍,逐渐的开始进入Nginx,除去核心的模块和结构体,剩余几章都是介绍一些核心模块。比较适合初学者,有个总体的预览,然后自己去挖掘真正的源码。
 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024