《Nginx高性能Web服务器详解》全面介绍了当前Internet上流行的一款开放源代码的Web服务器——Nginx。全书一共分为四大部分,分别从入门、功能、实现和应用等四个方面对Nginx服务器的知识进行完整阐述,从而满足广大读者在应用Nginx服务器时的普遍性需求。同时也深入剖析了Nginx服务器的工作原理和实现技术,对其中使用到的数据结构和方法进行了详细阐述,并且结合实际的应用情况给出了多个基于Nginx服务器,同时还部署有其他典型服务器的分布式网站架构部署配置。
《Nginx高性能Web服务器详解》特别适合于希望了解和掌握Nginx服务器应用技术和实现技术的广大教师、学生和电脑爱好者阅读,对使用Nginx服务器搭建Web服务器架构或进行网络服务器应用开发的技术人员尤其具有重要的阅读和参考价值。
第1章 Nginx初探 1
1.1 Nginx的历史 1
1.2 常见服务器产品介绍 2
1.2.1 Apache服务器 2
1.2.2 Microsoft IIS 3
1.2.3 Tomcat服务器 3
1.2.4 Lighttpd服务器 4
1.2.5 Nginx诞生记 4
1.2.6 版本变更大事记 5
1.3 Nginx的功能特性 5
1.3.1 基本HTTP服务 6
1.3.2 高级HTTP服务 6
1.3.3 邮件代理服务 7
1.4 常用功能介绍 7
1.4.1 HTTP代理和反向代理 7
1.4.2 负载均衡 7
1.4.3 Web缓存 8
1.5 本章小结 9
第2章 Nginx服务器的安装部署 10
2.1 如何获取Nginx服务器安装文件 10
2.1.1 获取新版本的Nginx服务器 11
2.1.2 获取Nginx服务器的历史版本 11
2.2 安装Nginx服务器和基本配置 12
2.2.1 Windows版本的安装 12
2.2.2 Linux版本的编译和安装:准备工作 13
2.2.3 Linux版本的编译和安装:Nginx软件的自动脚本 14
2.2.4 Linux版本的编译和安装:Nginx源代码的编译和安装 18
2.3 Nginx服务的启停控制 21
2.3.1 Nginx服务的信号控制 21
2.3.2 Nginx服务的启动 22
2.3.3 Nginx服务的停止 23
2.3.4 Nginx服务的重启 23
2.3.5 Nginx服务器的升级 24
2.4 Nginx服务器基础配置指令 24
2.4.1 nginx.conf文件的结构 25
2.4.2 配置运行Nginx服务器用户(组) 28
2.4.3 配置允许生成的worker process数 28
2.4.4 配置Nginx进程PID存放路径 29
2.4.5 配置错误日志的存放路径 29
2.4.6 配置文件的引入 30
2.4.7 设置网络连接的序列化 30
2.4.8 设置是否允许同时接收多个网络连接 30
2.4.9 事件驱动模型的选择 30
2.4.10 配置最大连接数 31
2.4.11 定义MIME-Type 31
2.4.12 自定义服务日志 32
2.4.13 配置允许sendfile方式传输文件 33
2.4.14 配置连接超时时间 33
2.4.15 单连接请求数上限 34
2.4.16 配置网络监听 34
2.4.17 基于名称的虚拟主机配置 35
2.4.18 基于IP的虚拟主机配置 36
2.4.19 配置location块 38
2.4.20 配置请求的根目录 39
2.4.21 更改location的URI 39
2.4.22 设置网站的默认首页 40
2.4.23 设置网站的错误页面 40
2.4.24 基于IP配置Nginx的访问权限 42
2.4.25 基于密码配置Nginx的访问权限 43
2.5 Nginx服务器基础配置实例 43
2.5.1 测试myServer1的访问 46
2.5.2 测试myServer2的访问 46
2.6 本章小结 47
第3章 Nginx服务器架构初探 48
3.1 模块化结构 48
3.1.1 什么是“模块化设计” 48
3.1.2 Nginx模块化结构 49
3.2 Nginx服务器的Web请求处理机制 54
3.2.1 多进程方式 54
3.2.2 多线程方式 55
3.2.3 异步方式 55
3.2.4 Nginx服务器如何处理请求 56
3.2.5 Nginx服务器的事件处理机制 57
3.3 Nginx服务器的事件驱动模型 57
3.3.1 事件驱动模型概述 57
3.3.2 Nginx中的事件驱动模型 58
3.3.3 select库 59
3.3.4 poll库 59
3.3.5 epoll库 60
3.3.6 rtsig模型 60
3.3.7 其他事件驱动模型 61
3.4 设计架构概览 61
3.4.1 Nginx服务器架构 62
3.4.2 Nginx服务器的进程 63
3.4.3 进程交互 64
3.4.4 Run Loops事件处理循环模型 64
3.5 本章小结 65
第4章 Nginx服务器的高级配置 67
4.1 针对IPv4的内核7个参数的配置优化 67
4.2 针对CPU的Nginx配置优化的2个指令 68
4.3 与网络连接相关的配置的4个指令 70
4.4 与事件驱动模型相关的配置的8个指令 71
4.5 本章小结 73
第5章 Nginx服务器的Gzip压缩 74
5.1 由ngx_http_gzip_module模块处理的9个指令 74
5.2 由ngx_http_gzip_static_module模块处理的指令 78
5.3 由ngx_http_gunzip_module模块处理的2个指令 79
5.4 Gzip压缩功能的使用 80
5.4.1 Gzip压缩功能综合配置实例 80
5.4.2 Gzip压缩功能与IE6浏览器运行脚本的兼容问题 82
5.4.3 Nginx与其他服务器交互时产生的Gzip压缩功能相关问题 83
5.5 本章小结 84
第6章 Nginx服务器的Rewrite功能 85
6.1 Nginx后端服务器组的配置的5个指令 85
6.2 Rewrite功能的配置 88
6.2.1 “地址重写”与“地址转发” 88
6.2.2 Rewrite规则 89
6.2.3 if指令 89
6.2.4 break指令 91
6.2.5 rewrite指令 92
6.2.6 rewrite_log指令 94
6.2.7 set指令 94
6.2.8 uninitialized_variable_warn指令 94
6.2.9 Rewrite常用全局变量 94
6.3 Rewrite的使用 95
6.3.1 域名跳转 95
6.3.2 域名镜像 96
6.3.3 独立域名 97
6.3.4 目录自动添加“/” 98
6.3.5 目录合并 99
6.3.6 防盗链 99
6.4 本章小结 101
第7章 Nginx服务器的代理服务 102
7.1 正向代理与反向代理的概念 102
7.2 Nginx服务器的正向代理服务 104
7.2.1 Nginx服务器正向代理服务的配置的3个指令 104
7.2.2 Nginx服务器正向代理服务的使用 105
7.3 Nginx服务器的反向代理服务 105
7.3.1 反向代理的基本设置的21个指令 106
7.3.2 Proxy Buffer的配置的7个指令 113
7.3.3 Proxy Cache的配置的12个指令 115
7.4 Nginx服务器的负载均衡 119
7.4.1 什么是负载均衡 120
7.4.2 Nginx服务器负载均衡配置 120
7.4.3 配置实例一:对所有请求实现一般轮询规则的负载均衡 120
7.4.4 配置实例二:对所有请求实现加权轮询规则的负载均衡 121
7.4.5 配置实例三:对特定资源实现负载均衡 121
7.4.6 配置实例四:对不同域名实现负载均衡 122
7.4.7 配置实例五:实现带有URL重写的负载均衡 123
7.5 本章小结 124
第8章 Nginx服务器的缓存机制 125
8.1 Web缓存技术简述 125
8.2 404错误驱动Web缓存 126
8.3 资源不存在驱动Web缓存 127
8.4 基于memcached的缓存机制的6个指令 128
8.5 Proxy Cache缓存机制 130
8.6 Nginx与Squid组合 133
8.6.1 Squid服务器的配置 133
8.6.2 Nginx服务器的配置 133
8.7 基于第三方模块ncache的缓存机制 134
8.8 本章小结 134
第9章 Nginx服务器的邮件服务 135
9.1 邮件服务 135
9.2 Nginx邮件服务的配置的12个指令 136
9.3 Nginx邮件服务配置实例 140
9.4 本章小结 142
第10章 Nginx源码结构 143
10.1 Nginx源码的3个目录结构 143
10.1.1 core目录 144
10.1.2 event目录 144
10.1.3 http目录 145
10.2 Nginx源码的模块化结构 145
10.2.1 公共功能 145
10.2.2 配置解析 146
10.2.3 内存管理 147
10.2.4 事件驱动 147
10.2.5 日志管理 148
10.2.6 HTTP服务 148
10.2.7 Mail服务 149
10.2.8 模块支持 150
10.3 本章小结 150
第11章 Nginx基本数据结构 151
11.1 ngx_module_s结构体 151
11.1.1 分类标识ctx_index 152
11.1.2 模块计数器index 152
11.1.3 模块上下文 153
11.1.4 回调函数 153
11.2 ngx_command_s结构体 154
11.2.1 type成员 154
11.2.2 函数指针set 156
11.2.3 conf和offset 156
11.3 3个基本模块的指令集数组结构 157
11.3.1 http模块 157
11.3.2 event模块 158
11.3.3 mail模块 159
11.4 ngx_ pool_s结构体 160
11.4.1 ngx_pool_data_t结构体 160
11.4.2 ngx_pool_large_s结构体 161
11.4.3 ngx_pool_cleanup_s结构体 161
11.5 Nginx socket相关的数据结构 161
11.5.1 ngx_listening_s结构体 161
11.5.2 ngx_http_conf_port_t结构体 162
11.5.3 ngx_http_conf_addr_t结构体 163
11.6 ngx_event_s结构体 163
11.7 ngx_connection_s结构体 164
11.8 ngx_cycle_s结构体 166
11.9 ngx_conf_s结构体 168
11.9.1 配置上下文*ctx 169
11.9.2 指令类型type 169
11.10 ngx_signal_t结构体 170
11.11 ngx_process_t结构体 172
11.12 本章小结 172
第12章 Nginx的启动初始化 173
12.1 Nginx启动过程概览 173
12.1.1 程序初始化 173
12.1.2 启动多进程 174
12.2 Nginx的初始化 175
12.2.1 读取并处理启动参数 176
12.2.2 继承socket 185
12.2.3 初始化时间及建立新的cycle结构 187
12.2.4 建立core模块上下文结构 188
12.2.5 解析配置文件 190
12.2.6 初始化core模块上下文 196
12.2.7 创建PID文件 199
12.2.8 处理监听socket 199
12.2.9 信号设置 201
12.2.10 启动Master Process 203
12.2.11 Nginx初始化过程总结 204
12.3 Nginx的启动 205
12.3.1 主进程设置信号阻塞 206
12.3.2 设置进程标题 206
12.3.3 启动工作进程 208
12.3.4 启动缓存索引重建及管理进程 211
12.3.5 循环处理信号 212
12.3.6 Nginx启动过程总结 216
12.4 本章小结 217
第13章 Nginx的时间管理 218
13.1 获取系统时间的一般方法 218
13.1.1 系统调用的开销 218
13.1.2 gettimeofday() 219
13.2 Nginx时间管理的工作原理 220
13.2.1 时间缓存的更新 220
13.2.2 更新时间缓存的时机 224
13.3 缓存时间的精度 226
13.3.1 设置缓存时间的精度 226
13.3.2 缓存时间精度的控制原理 226
13.4 本章小结 228
第14章 Nginx的内存管理 229
14.1 内存池的逻辑结构 229
14.2 内存池的管理 230
14.2.1 创建内存池 231
14.2.2 销毁内存池 234
14.2.3 重置内存池 235
14.3 内存的使用 235
14.3.1 申请内存 235
14.3.2 释放内存 241
14.3.3 回收内存 241
14.4 本章小结 243
第15章 Nginx工作进程 244
15.1 工作进程概览 244
15.2 相关源码分析 245
15.2.1 设置工作进程运行环境 246
15.2.2 监听和处理进程控制事件 249
15.2.3 接收网络请求事件 250
15.2.4 执行进程控制 254
15.3 Nginx服务器进程间通信 256
15.3.1 Linux进程间通信方式 256
15.3.2 Linux进程间双工通信的实现 257
15.3.3 通信通道的建立和设置 257
15.3.4 通信通道的使用 259
15.3.5 消息的读写 259
15.4 本章小结 263
第16章 Nginx的模块编程 264
16.1 模块的种类 264
16.2 模块开发实践 265
16.2.1 “Hello_Nginx”模块编程实例 265
16.2.2 模块的结构 268
16.2.3 模块命名规则 272
16.3 模块的编译与安装 272
16.4 本章小结 274
第17章 Nginx在动态网站建设中的应用实例 275
17.1 Nginx在JSP网站建设中的应用 275
17.1.1 环境描述 275
17.1.2 特别模块说明 276
17.1.3 配置方案 276
17.2 Nginx在PHP网站建设中的应用 278
17.2.1 环境描述 278
17.2.2 特别模块说明 279
17.2.3 配置方案 280
17.3 Nginx+Perl脚本在网站建设中的应用 281
17.3.1 环境描述 282
17.3.2 特别模块说明 282
17.3.3 配置方案 282
17.4 本章小结 285
第18章 Nginx经典应用——LNAMP 286
18.1 LNAMP概述 286
18.2 手动部署和配置 287
18.2.1 环境准备 287
18.2.2 安装和配置MySQL 288
18.2.3 安装和配置Apache 289
18.2.4 安装 PHP 289
18.3 自动安装 293
18.4 本章小结 293
附录A Nginx内置变量 294
附录B 正则表达式语法 296
《Minecraft我的世界》内容简介:越玩越聪明! Minecraft我的世界是一款高自由度的沙盒建造游戏,玩家可以在游戏中的三维空间里创造
《数据中台:赋能企业实时经营与商业创新》内容简介:随着数字化的浪潮席卷而来,无论是个人还是企业,相信都已经真切地感受到了数
《这就是OKR》内容简介:这本书是传奇风险投资人约翰·杜尔的作品,揭示了OKR这一目标设定系统如何促使英特尔、谷歌等科技巨头实现
《中国社会质量研究:理论、测量和政策》内容简介:近年来,国内逐渐兴起了对欧洲社会质量理论的讨论。本书在介绍欧洲社会质量理论
Python开发从入门到精通系列Python语言从入门到精通 本书特色 Python语言从入门到精通循序渐进地讲解了使用Python语言的核心知识,并通过具体实...
ThisintroductiontourbanplanningapplicationsandproblemsolvingwithCISisappropriate...
《且介亭杂文二集》内容简介:本书是鲁迅1935年所作杂文四十八篇,1935年末经作者亲自编定,1937年7月由上海三闲书屋初版。包括《叶
《柴油机维修技巧与故障案例分析》较为系统地介绍了柴油机(包括电控高压共轨燃油喷射系统、单体泵喷射系统等)的基础知识,使用
《品牌创造增长》内容简介:怎样建立品牌?怎样挖掘用户的隐性需求?对用户而言,你的产品只是一个名字,还是一个品牌?打造一个知
《欧洲文明的轨迹》内容简介:本书为朱邦造大使的重要论著,作者潜心研究欧洲多年,从欧洲文明的萌芽古希腊、古罗马时期,到漫长的
《中国圣书:悦读《论语》》内容简介:《论语》是一部记录孔子及其弟子言行的语录体著作,是儒家学派最重要的经典,大约成书于战国
有人说Google让我们变得更笨,有人说Facebook出卖了我们的隐私,有人说Twitter将我们的注意力碎片化。在你担忧这些社会化媒体让我
书名:完全手册:PHP网络开发详解作者:孙鹏程等编著来源:电子工业出版社出版时间:2007年07月ISBN:9787121046483定价:89元第1
《鲜活的数据》内容简介:在生活中,数据几乎无处不在,任我们取用。然而,同样的数据给人的感觉可能会千差万别:或冰冷枯燥,让人
《中国移动通信营销案例精选》重点关注中国移动通信的市场战略和市场运作模式。从“沟通从心开始”到“动感地带”客户品牌推出,
计算机程序设计艺术第1卷第1册(双语版) 内容简介 关于算法分析的这多卷论著已经长期被公认为经典计算机科学的定义性描述。迄今已出版的完整的三卷已经组成了程序设计...
《打开餐巾纸(〈餐巾纸的背面〉之实用手册)》内容简介:难以置信,一张餐巾纸上曾诞生过这样的伟大创想:一个三角形,开创了美国
本书由一个团队编写而成,这个团队的成员都是一些经验丰富且专注于JavaScript的开发者。TomHallett是一位高级Ruby和JavaScript工
内容提要为加快我国电信发展的现代化步伐,必须尽可能采用高新电信技术和设备。与传统的PDH网相比,SDH网能更好地满足电信网朝着
《人类还能好好合作吗》内容简介:这是一本关于合作的书。合作是我们这个物种的超能力,是人类不仅能够生存下来,而且几乎在地球上