新書推薦:
《
以爱为名的支配
》
售價:HK$
62.7
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:HK$
53.8
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:HK$
66.1
《
新时代硬道理 广东寻路高质量发展
》
售價:HK$
77.3
《
6S精益管理实战(精装版)
》
售價:HK$
100.6
《
异域回声——晚近海外汉学之文史互动研究
》
售價:HK$
109.8
《
世界文明中的作物迁徙:聚焦亚洲、中东和南美洲被忽视的本土农业文明
》
售價:HK$
99.7
《
无端欢喜
》
售價:HK$
76.2
|
內容簡介: |
Nginx是由俄罗斯工程师Igor Sysoev开发的一个高性能Web服务器,运行效率远超传统的Apache、Tomcat,是世界第二大Web服务器,被国内外诸多**互联网公司采用。 Nginx的一个突出特点是其灵活优秀的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如fastcgi、memcached、mysql等),使得Nginx成长为了一个近乎"全能”的服务器软件。 Nginx以纯C语言实现,开发扩展功能模块也大多使用C语言,但由于C语言固有的过程式特性,编写、调试代码都较麻烦——特别是对于Nginx的初学者。本书深入源码,详细解析了模块体系、配置指令、HTTP框架等Nginx核心运行机制,并在此基础上讲解如何使用C++和Boost程序库来开发Nginx模块,充分利用现代C++里的大量新特性和库组件,让Nginx的模块开发变得更加便捷、轻松和愉快。
|
目錄:
|
第0章 导读1
0.1 关于本书1
0.2 读者对象2
0.3 读者要求3
0.4 运行环境3
0.5 本书的结构4
0.6 如何阅读本书6
0.7 本书的源码6
第1章 Nginx入门7
1.1 关于Nginx7
1.1.1 历史8
1.1.2 特点8
1.1.3 进程模型9
1.1.4 版本10
1.2 安装Nginx11
1.2.1 准备工作11
1.2.2 快速安装11
1.2.3 运行命令12
1.2.4 验证安装13
1.2.5 定制安装14
1.3 配置Nginx15
1.3.1 配置文件格式16
1.3.2 进程配置17
1.3.3 运行日志配置18
1.3.4 http配置18
1.3.5 server配置19
1.3.6 location配置20
1.3.7 文件访问配置21
1.3.8 upstream配置22
1.3.9 变量22
1.4 总结24
第2章 Nginx开发准备25
2.1 开发环境25
2.1.1 C++标准25
2.1.2 Boost程序库26
2.2 Nginx的目录结构26
2.3 Nginx源码的特点27
2.3.1 代码风格28
2.3.2 代码优化28
2.3.3 面向对象思想28
2.4 在Nginx里使用C++29
2.4.1 实现原则29
2.4.2 代码风格29
2.4.3 编译脚本30
2.5 基本的C++包装类32
2.5.1 类定义32
2.5.2 构造和析构33
2.5.3 成员函数33
2.6 总结34
第3章 Nginx基础设施35
3.1 头文件35
3.2 整数类型36
3.2.1 标准整数类型36
3.2.2 自定义整数类型36
3.2.3 无效值37
3.2.4 C++封装38
3.3 错误处理41
3.3.1 错误码定义41
3.3.2 C++异常41
3.4 内存池44
3.4.1 结构定义44
3.4.2 操作函数45
3.4.3 C++封装45
3.4.4 清理机制48
3.4.5 C++内存分配器50
3.5 字符串52
3.5.1 结构定义52
3.5.2 操作函数53
3.5.3 C++封装55
3.6 时间与日期58
3.6.1 时间结构定义58
3.6.2 时间操作函数58
3.6.3 日期结构定义59
3.6.4 日期操作函数60
3.6.5 C++封装时间61
3.6.6 C++封装日期62
3.7 运行日志64
3.7.1 结构定义65
3.7.2 操作函数65
3.7.3 C++封装66
3.8 总结68
第4章 Nginx高级数据结构71
4.1 动态数组71
4.1.1 结构定义71
4.1.2 操作函数73
4.1.3 C++封装73
4.2 单向链表76
4.2.1 结构定义77
4.2.2 操作函数78
4.2.3 C++迭代器79
4.2.4 C++封装链表81
4.3 双端队列84
4.3.1 结构定义84
4.3.2 操作函数85
4.3.3 C++节点87
4.3.4 C++迭代器89
4.3.5 C++封装队列90
4.4 缓冲区95
4.4.1 结构定义95
4.4.2 操作函数97
4.4.3 C++封装98
4.5 数据块链100
4.5.1 结构定义100
4.5.2 操作函数101
4.5.3 C++节点101
4.5.4 C++迭代器103
4.5.5 C++封装数据块链105
4.6 键值对107
4.6.1 简单键值对107
4.6.2 散列表键值对107
4.7 总结108
第5章 Nginx开发综述111
5.1 *简单的Nginx模块111
5.1.1 模块设计112
5.1.2 配置解析112
5.1.3 处理函数114
5.1.4 模块集成116
5.1.5 编译脚本和命令117
5.1.6 测试验证118
5.2 Nginx开发基本流程119
5.2.1 设计119
5.2.2 开发119
5.2.3 编译120
5.2.4 测试验证120
5.2.5 调优121
5.3 Nginx的模块121
5.3.1 模块的数据结构121
5.3.2 模块的种类123
5.3.3 http模块124
5.3.4 模块的类图124
5.3.5 模块的组织形式125
5.4 Nginx的配置127
5.4.1 结构定义128
5.4.2 配置解析的基本流程131
5.4.3 配置数据的存储模型133
5.4.4 访问配置数据138
5.4.5 确定配置数据的位置138
5.4.6 配置解析函数140
5.4.7 配置数据的合并141
5.4.8 配置指令的类型142
5.5 Nginx模块源码分析143
5.5.1 ngx_core_module143
5.5.2 ngx_errlog_module146
5.6 Nginx的编译脚本147
5.6.1 运行机制147
5.6.2 使用的变量148
5.7 C++封装模块信息149
5.7.1 NgxModuleConfig149
5.7.2 NgxModule153
5.8 C++封装配置解析155
5.8.1 NgxCommand155
5.8.2 NgxTake155
5.8.3 NGX_MODULE_NULL157
5.9 C++开发Nginx模块158
5.9.1 C++模块的基本组成158
5.9.2 配置信息类159
5.9.3 业务逻辑类160
5.9.4 模块集成类162
5.9.5 实现源文件164
5.9.6 增加更多功能164
5.10 总结165
第6章 Nginx HTTP框架综述169
6.1 HTTP框架简介169
6.1.1 模块分类169
6.1.2 处理流程170
6.1.3 请求结构体172
6.1.4 请求的处理阶段173
6.1.5 请求的环境数据175
6.2 HTTP处理引擎176
6.2.1 处理函数原型176
6.2.2 处理函数的存储方式176
6.2.3 内容处理函数177
6.2.4 引擎的数据结构178
6.2.5 引擎的初始化179
6.2.6 引擎的运行机制181
6.2.7 日志阶段的处理182
6.3 HTTP过滤引擎183
6.3.1 过滤函数原型183
6.3.2 过滤函数链表184
6.3.3 过滤函数的顺序185
6.3.4 过滤链表的运行机制187
6.3.5 请求体过滤188
6.4 Nginx模块源码分析188
6.4.1 ngx_http_static_module188
6.4.2 ngx_http_not_modified_filter_ module189
6.5 C++封装190
6.5.1 NgxModuleCtx191
6.5.2 NgxHttpCoreModule193
6.5.3 NgxFilter195
6.6 总结197
第7章 Nginx HTTP请求处理199
7.1 HTTP状态码199
7.2 请求结构体200
7.3 请求行201
7.3.1 请求方法201
7.3.2 协议版本号202
7.3.3 资源标识符202
7.4 请求头203
7.5 请求体204
7.5.1 结构定义205
7.5.2 操作函数205
7.6 响应头206
7.6.1 结构定义206
7.6.2 操作函数207
7.7 响应体207
7.8 C++封装208
7.8.1 NgxHeaders208
7.8.2 NgxRequestBody211
7.8.3 NgxRequest212
7.8.4 NgxResponse213
7.9 开发HTTP处理模块216
7.9.1 模块设计216
7.9.2 配置信息类217
7.9.3 业务逻辑类217
7.9.4 模块集成类219
7.9.5 实现源文件221
7.9.6 编译脚本221
7.9.7 测试验证221
7.10 开发HTTP过滤模块222
7.10.1 模块设计222
7.10.2 配置信息类222
7.10.3 环境数据类223
7.10.4 业务逻辑类223
7.10.5 模块集成类227
7.10.6 实现源文件228
7.10.7 编译脚本228
7.10.8 测试验证228
7.11 总结229
第8章 Nginx HTTP请求转发231
8.1 upstream框架简介231
8.1.1 工作原理232
8.1.2 请求结构体233
8.1.3 上游结构体234
8.1.4 上游配置参数236
8.2 upstream运行机制237
8.2.1 回调函数237
8.2.2 初始化upstream239
8.2.3 设置upstream239
|
|