¥ 43.71 5.5折 ¥ 79 九五品
仅1件
作者罗剑锋 著
出版社电子工业出版社
出版时间2015-11
版次1
装帧平装
货号A6
上书时间2024-11-26
Nginx是由俄罗斯工程师IgorSysoev开发的一个高性能Web服务器,运行效率远超传统的Apache、Tomcat,是世界第二大Web服务器,被国内外诸多互联网公司采用。
Nginx的一个突出特点是其灵活模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如fastcgi、memcached、mysql等),使得Nginx成长为了一个近乎“全能”的服务器软件。
Nginx以纯C语言实现,开发扩展功能模块也大多使用C语言,但由于C语言固有的过程式特性,编写、调试代码都较麻烦——特别是对于Nginx的初学者。《Nginx模块开发指南:使用C++11和Boost程序库》深入源码,详细解析了模块体系、配置指令、HTTP框架等Nginx核心运行机制,并在此基础上讲解如何使用C++和Boost程序库来开发Nginx模块,充分利用现代C++里的大量新特性和库组件,让Nginx的模块开发变得更加便捷、轻松和愉快。
《Nginx模块开发指南:使用C++11和Boost程序库》结构严谨、脉络清晰、详略得当,值得广大软件开发工程师、系统运维工程师和编程爱好者拥有。
第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
8.2.4 启动upstream241
8.2.5 处理upstream数据241
8.3 load-balance运行机制242
8.3.1 结构定义243
8.3.2 初始化模块入口247
8.3.3 初始化IP地址列表248
8.3.4 初始化算法250
8.3.5 执行算法251
8.4 Nginx模块源码分析251
8.4.1 ngx_http_memcached_module251
8.4.2 ngx_http_upstream_ip_hash_ module254
8.5 C++封装257
8.5.1 NgxUpstream257
8.5.2 NgxUpstreamHelper259
8.5.3 NgxHttpUpstreamModule261
8.5.4 NgxLoadBalance263
8.6 开发upstream模块264
8.6.1 模块设计264
8.6.2 配置信息类264
8.6.3 业务逻辑类265
8.6.4 模块集成类268
8.6.5 实现源文件269
8.6.6 编译脚本269
8.6.7 测试验证269
8.7 开发load-balance模块270
8.7.1 模块设计271
8.7.2 配置信息类271
8.7.3 业务逻辑类271
8.7.4 模块集成类273
8.7.5 实现源文件275
8.7.6 编译脚本275
8.7.7 测试验证275
8.8 总结276
第9章 Nginx HTTP子请求277
9.1 子请求简介277
9.1.1 工作原理278
9.1.2 请求结构体279
9.1.3 回调函数280
9.1.4 待处理请求链表282
9.1.5 子请求存储结构282
9.2 子请求运行机制283
9.2.1 创建子请求283
9.2.2 处理引擎287
9.2.3 数据整理288
9.3 C++封装290
9.3.1 NgxSubRequestHandler290
9.3.2 NgxSubRequest292
9.4 数据回传模块293
9.4.1 模块设计293
9.4.2 环境数据类293
9.4.3 业务逻辑类295
9.4.4 模块集成类297
9.4.5 编译脚本298
9.5 在模块里使用子请求299
9.5.1 模块设计299
9.5.2 配置信息类299
9.5.3 业务逻辑类300
9.5.4 测试验证303
9.6 总结304
第10章 Nginx变量305
10.1 结构定义305
10.1.1 变量值305
10.1.2 变量访问对象306
10.1.3 变量的存储307
10.1.4 请求结构体307
10.2 运行机制308
10.2.1 注册变量308
10.2.2 获取变量309
10.3 C++封装310
10.3.1 NgxVariableValue310
10.3.2 NgxVariable311
10.3.3 NgxVariables312
10.3.4 NgxVarManager313
10.3.5 NgxVariableValueProxy314
10.4 在模块里使用变量315
10.4.1 添加变量316
10.4.2 读写变量317
10.5 总结317
第11章 Nginx辅助设施319
11.1 摘要算法319
11.1.1 MD5319
11.1.2 SHA-1320
11.1.3 MurmurHash321
11.1.4 C++封装321
11.2 编码和解码324
11.2.1 CRC校验324
11.2.2 Base64编码解码325
11.2.3 URI编码解码326
11.2.4 HTML和JSON编码327
11.3 正则表达式327
11.4 共享内存328
11.4.1 结构定义328
11.4.2 操作函数329
11.4.3 C++共享内存329
11.5 定时器331
11.5.1 结构定义331
11.5.2 操作函数332
11.5.3 C++定时器事件332
11.5.4 C++定时器工厂333
11.6 总结335
第12章 Nginx与设计模式337
12.1 设计模式简介337
12.2 框架级别的模式337
12.3 业务级别的模式339
12.4 代码级别的模式340
12.5 总结342
第13章 结束语343
13.1 本书的遗憾343
13.2 下一步344
13.3 临别赠言345
附录A 推荐书目347
附录B GDB调试简介349
附录C Nginx的字符串格式化351
附录D Nginx里的void*变量353
附录E Nginx C++模块简介355
附录F Nginx Lua模块简介357
— 没有更多了 —
以下为对购买帮助不大的评价