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专业学生,更是不可多得的学习资料。
目 录
第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
《成为被喜欢的品牌:如何获得消费者的非理性忠诚》内容简介:在物质丰富与信息冗余的时代,消费者的注意力严重分散,品牌的传播遭
《东北沿边地区开发开放战略研究》内容简介:衣保中著的《东北沿边地区开发开放战略研究/东北亚研究丛书》立足区域经济联动发展的可
《3ds Max&VRay室内材质表现白金手册》内容简介:3ds Max&VRay室内材质表现白金手册是“白金手册”系列教材中的一本,全书共14章。
《职业规划下的高考志愿填报》内容简介:《职业规划下的高考志愿填报》是一本指导考生和家长如何正确填报高考志愿的书,本书分上篇
随着通信技术和Internet的快速发展,PSTN、移动网、Internet之间的融合已经成为大势所趋,人们对网络业务需求也逐步呈现多样化、
《做一个清醒的现代人》内容简介:在当代中国传统文化的纵向传承与外来文化的横向互动中,在这种“纵横交错”的文化背景下,刘擎教
《江南古典私家园林》内容简介:中国江南,自然山水秀美,物产丰饶,自魏晋以来一直是一方富庶的乐土。明清以降,更是文人巨贾会聚
《汉晋女德建构》内容简介:中国现代性,是以否定和反叛传统文化的姿态出现的,其中《列女传》、《女诫》等承载传统女德的重要文本
一间麻省理工的旧实验室一群至情至性的雷达先锋一则可歌可泣的惊世传奇一段令人叹惋的豪情历史雷达的发明是扭转二次大战战局的关
《黑洞旅行指南》内容简介:这本引人入胜的科普小书解读了当代科学里极具挑战性的现象—黑洞,它也是我们理解整个宇宙的方向标。在
ComputerVisionisfastbecominganimportanttechnologyandisusedinMarsrobots,nationals...
《网站分析基础教程流量与价值的秘密》分为三篇,即理论基础篇、应用方法篇和实战指南篇。理论基础篇介绍了网站分析的用途和定义
《关键设计报告:改变过去影响未来的交互设计法则》讲述了交互设计所有最基本的东西:交互设计的发展历史和由来,交互设计领域里的
笨办法学Ruby-(第3版) 本书特色 本书是一本ruby入门书籍,是《“笨办法”学python》的姊妹篇。本书适合对计算机了解不多,没有学过编程,但对编程感兴...
《ASP.NET网页制作教程:从基本语法学起(附光盘)》分为:基础篇、对象应用篇、案例研究篇。奠定ASP网页制作的基础,使用Server控件
C++Primer中文版第4版 内容简介 作为目前业界广泛使用的编程语言,C++可谓包罗万象、博大精深。20年来,讲述C++的图书早已经汗牛充栋、层出不穷,但其...
《杜甫诗选注(增补本)》内容简介:杜甫(712—770),字子美,自号少陵野老,后世也称其杜拾遗、杜工部、杜少陵等。出生于河南巩
《逢考必过》内容简介:世界记忆大师的经典记忆著作,应战各种考试的制胜法宝,颠覆你既定记忆程序的学力提升指南! 8次世界脑力锦
《全国计算机等级考试教程:二级MS Office高级应用》内容简介:本书依据教育部考试中心最新发布的《全国计算机等级考试大纲》以及作
「我們的使命是站立在科技與人文的交叉處,並以此為起點創造嶄新的事物!」史蒂夫賈伯斯(SteveJobs)◎市面上第一本將APPLE產品