Nginx模块开发指南:使用C++11和Boost程序库

副标题:无

作   者:罗剑锋 著

分类号:

ISBN:9787121272943

微信扫一扫,移动浏览光盘

简介

  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 关于Nginx 7
1.1.1 历史 8
1.1.2 特点 8
1.1.3 进程模型 9
1.1.4 版本 10
1.2 安装Nginx 11
1.2.1 准备工作 11
1.2.2 快速安装 11
1.2.3 运行命令 12
1.2.4 验证安装 13
1.2.5 定制安装 14
1.3 配置Nginx 15
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_module 143
5.5.2 ngx_errlog_module 146
5.6 Nginx的编译脚本 147
5.6.1 运行机制 147
5.6.2 使用的变量 148
5.7 C++封装模块信息 149
5.7.1 NgxModuleConfig 149
5.7.2 NgxModule 153
5.8 C++封装配置解析 155
5.8.1 NgxCommand 155
5.8.2 NgxTake 155
5.8.3 NGX_MODULE_NULL 157
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_module 188
6.4.2 ngx_http_not_modified_filter_ module 189
6.5 C++封装 190
6.5.1 NgxModuleCtx 191
6.5.2 NgxHttpCoreModule 193
6.5.3 NgxFilter 195
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 NgxHeaders 208
7.8.2 NgxRequestBody 211
7.8.3 NgxRequest 212
7.8.4 NgxResponse 213
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 初始化upstream 239
8.2.3 设置upstream 239

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Nginx模块开发指南:使用C++11和Boost程序库
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon