Nginx完全开发指南:使用C、C++、JavaScript和Lua

副标题:无

作   者:罗剑锋

分类号:

ISBN:9787121364365

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

简介


Nginx是著名的Web服务器,性能优异,运行效率远超传统的Apache、Tomcat,广泛应用于国内外诸多*互联网公司。Nginx的一个突出特点是其灵活优秀的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如proxy、mysql、redis、rtmp、lua等),使得Nginx成长为了一个近乎“全能”的服务器软件。Nginx功能强大,架构复杂,学习、维护和开发的门槛较高。为了帮助读者跨越这一障碍,本书深入*的Nginx源码(Stable 1.16.0),详细剖析了模块体系、动态插件、功能框架、内存分配、进程模型、事件驱动、线程池、TCP/UDP/HTTP处理等Nginx核心运行机制,在此基础上讲解如何使用C、C 、JavaScript、Lua等语言来增强扩展Nginx,让任何人都能够便捷、轻松地开发和定制Nginx,进而应用到自己的实际工作中,创造出更多的价值。本书结构严谨、脉络清晰、论述精确、详略得当、图文并茂,值得广大软件开发工程师、系统运维工程师和编程爱好者拥有。

目录


目录
第0章 导读 1
0.1 于本书 1
0.2 读者对象 3
0.3 读者要求 4
0.4 运行环境 5
0.5 本书的结构 5
0.6 如何阅读本书 6
0.7 本书的源码 7
第1章 Nginx入门 8
1.1 关于Nginx 8
1.1.1 历史 9
1.1.2 特点 9
1.1.3 进程模型 10
1.1.4 版本 12
1.2 安装Nginx 12
1.2.1 准备工作 13
1.2.2 快速安装 13
1.2.3 运行命令 14
1.2.4 验证安装 15
1.2.5 定制安装 16
1.3 配置Nginx 18
1.3.1 语法格式 19
1.3.2 进程管理 20
1.3.3 动态模块 22
1.3.4 运行日志 22
1.3.5 事件机制 22
1.4 HTTP服务 23
1.4.1 基本配置 24
1.4.3 location配置 25
1.4.4 file配置 26
1.5 TCP/UDP服务 27
1.6 反向代理 28
1.6.1 上游集群 28
1.6.2 负载均衡 29
1.6.3 代理转发 30
1.7 变量 30
1.8 总结 32
第2章 Nginx开发准备 33
2.1 源码结构 33
2.2 源码特点 34
2.2.1 代码风格 34
2.2.2 代码优化 35
2.2.3 面向对象思想 35
2.3 头文件 36
2.4 总结 36
第3章 Nginx基础设施 37
3.1 常数 37
3.1.1 环境信息 37
3.1.2 版本信息 38
3.1.3 错误码 38
3.2 整数类型 39
3.2.1 标准整数类型 39
3.2.2 自用整数类型 40
3.2.3 无效值 40
3.3 内存池 42
3.3.1 结构定义 42
3.3.2 操作函数 43
3.3.3 用法示例 44
3.4 字符串 44
3.4.1 结构定义 44
3.4.2 操作函数 45
3.4.3 用法示例 48
3.5 时间 49
3.5.1 结构定义 49
3.5.2 操作函数 49
3.5.3 用法示例 50
3.6 日期 50
3.6.1 结构定义 50
3.6.2 操作函数 51
3.6.3 用法示例 52
3.7 运行日志 52
3.7.1 结构定义 52
3.7.2 操作函数 53
3.7.3 用法示例 54
3.8 摘要算法 54
3.8.1 Times33 55
3.8.2 CRC 55
3.8.3 MurmurHash 56
3.8.4 MD5 57
3.8.5 SHA-1 57
3.9 数据编码 58
3.9.1 Base64 58
3.9.2 HTML/JSON 59
3.10 总结 60
第4章 Nginx高级数据结构 61
4.1 动态数组 61
4.1.1 结构定义 62
4.1.2 操作函数 63
4.1.3 用法示例 64
4.2 单向链表 65
4.2.1 结构定义 65
4.2.2 操作函数 66
4.2.3 用法示例 66
4.3 双端队列 68
4.3.1 结构定义 68
4.3.2 操作函数 69
4.3.3 用法示例 71
4.4 红黑树 72
4.4.1 结构定义 73
4.4.2 操作函数 75
4.4.3 用法示例 76
4.5 缓冲区 78
4.5.1 结构定义 78
4.5.2 操作函数 80
4.5.3 用法示例 81
4.6 数据块链 82
4.6.1 结构定义 82
4.6.2 操作函数 83
4.6.3 用法示例 83
4.7 总结 84
第5章 Nginx开发概述 85
5.1 开发示例 85
5.1.1 模块设计 85
5.1.2 配置解析 86
5.1.3 处理函数 88
5.1.4 模块集成 90
5.1.5 编译脚本 91
5.1.6 测试验证 92
5.2 开发流程 92
5.2.1 设计 93
5.2.2 开发 93
5.2.3 编译 94
5.2.4 测试验证 94
5.2.5 调优 94
5.2.6 流程图 95
5.3 编译脚本 95
5.3.1 运行机制 96
5.3.2 脚本变量 96
5.3.3 添加模块 97
5.3.4 脚本格式 97
5.3.5 旧式脚本 98
5.4 总结 99
第6章 Nginx模块体系 100
6.1 模块架构 100
6.1.1 结构定义 100
6.1.2 模块的签名 102
6.1.3 模块的种类 103
6.1.4 模块的函数指针表 104
6.1.5 模块的类图 105
6.1.6 模块的组织形式 106
6.1.7 模块的静态加载 108
6.1.8 模块的动态加载 110
6.2 配置解析 113
6.2.1 结构定义 113
6.2.2 基本流程 116
6.2.3 存储模型 118
6.2.4 访问配置数据 122
6.2.5 配置数据的位置 123
6.2.6 配置数据的解析 124
6.2.7 配置数据的合并 126
6.2.8 配置指令的类型 127
6.3 源码分析 128
6.3.1 ngx_core_module 128
6.3.2 ngx_errlog_module 130
6.4 总结 132
第7章 Nginx功能框架 134
7.1 框架简介 134
7.1.1 模块分类 134
7.1.2 处理流程 135
7.1.3 请求的处理阶段 137
7.1.4 请求结构体 138
7.1.5 请求的环境数据 140
7.2 处理引擎 141
7.2.1 函数原型 141
7.2.2 处理函数的存储方式 141
7.2.3 内容处理函数 142
7.2.4 引擎的数据结构 143
7.2.5 引擎的初始化 144
7.2.6 引擎的运行机制 145
7.2.7 日志阶段的处理 148
7.3 过滤引擎 148
7.3.1 函数原型 148
7.3.2 过滤函数链表 149
7.3.3 过滤函数的顺序 150
7.3.4 过滤链表的运行机制 152
7.3.5 请求体过滤 153
7.4 源码分析 153
7.4.1 ngx_http_static_module 154
7.4.2 ngx_http_not_modified_filter_module 155
7.5 总结 156
第8章 Nginx请求处理 158
8.1 状态码 158
8.2 请求结构体 159
8.3 请求行 160
8.3.1 请求方法 160
8.3.2 协议版本号 161
8.3.3 资源标识符 161
8.4 请求头 162
8.5 请求体 163
8.5.1 结构定义 163
8.5.2 操作函数 164
8.6 响应头 164
8.6.1 结构定义 164
8.6.2 操作函数 165
8.7 响应体 166
8.8 源码分析 166
8.8.1 ngx_http_static_module 166
8.8.2 ngx_http_not_modified_filter_module 168
8.9 开发示例:content handler 169
8.9.1 模块设计 169
8.9.2 配置数据 169
8.9.3 处理函数 170
8.9.4 注册函数 171
8.9.5 模块集成 172
8.9.6 编译脚本 173
8.9.7 测试验证 173
8.10 开发示例:filter 173
8.10.1 模块设计 173
8.10.2 配置数据 174
8.10.3 环境数据 174
8.10.4 注册过滤函数 175
8.10.5 过滤响应头 175
8.10.6 过滤响应体 176
8.10.7 模块集成 178
8.10.8 编译脚本 179
8.10.9 测试验证 179
8.11 总结 180
第9章 Nginx请求转发 181
9.1 框架简介 181
9.1.1 工作原理 182
9.1.2 请求结构体 183
9.1.3 上游结构体 184
9.1.4 上游配置参数 185
9.2 请求转发 186
9.2.1 回调函数 186
9.2.2 初始化 188
9.2.3 设置参数 189
9.2.4 启动连接 190
9.2.5 处理响应头 190
9.2.6 处理响应体 191
9.3 负载均衡 192
9.3.1 结构定义 192
9.3.2 初始化模块入口 196
9.3.3 初始化地址列表 197
9.3.4 初始化算法 199
9.3.5 执行算法 200
9.4 源码分析 200
9.4.1 ngx_http_memcached_module 201
9.4.2 ngx_http_upstream_ip_hash_module 203
9.5 开发示例:upstream 206
9.5.1 模块设计 206
9.5.2 配置数据 206
9.5.3 上行数据 208
9.5.4 下行数据 208
9.5.5 启动转发 209
9.5.6 注册函数 210
9.5.7 模块集成 210
9.5.8 编译脚本 211
9.5.9 测试验证 212
9.6 开发示例:balance 212
9.6.1 模块设计 212
9.6.2 配置数据 212
9.6.3 算法数据结构 213
9.6.4 模块入口 213
9.6.5 算法实现 214
9.6.6 模块集成 215
9.6.7 编译脚本 216
9.6.8 测试验证 216
9.7 总结 216
第10章 Nginx子请求 218
10.1 框架简介 218
10.1.1 工作原理 219
10.1.2 请求结构体 220
10.1.3 回调函数 221
10.1.4 待处理请求链表 223
10.1.5 子请求存储结构 223
10.2 运行机制 223
10.2.1 创建子请求 224
10.2.2 处理引擎 228
10.2.3 数据整理 229
10.3 开发示例 230
10.3.1 模块设计 231
10.3.2 配置数据 231
10.3.3 环境数据 231
10.3.4 回调函数 231
10.3.5 处理函数 232
10.3.6 注册函数 233
10.3.7 测试验证 234
10.4 总结 234
第11章 Nginx变量 236
11.1 结构定义 236
11.1.1 变量 237
11.1.2 复杂变量 238
11.1.3 变量的存储 239
11.1.4 请求结构体 239
11.2 操作变量 240
11.2.1 添加变量 240
11.2.2 获取变量 241
11.2.3 修改变量 242
11.2.4 编译复杂变量 242
11.2.5 获取复杂变量 242
11.3 开发示例:变量 243
11.3.1 模块设计 243
11.3.2 定义变量 243
11.3.3 添加变量 244
11.3.4 获取变量 244
11.3.5 测试验证 245
11.4 开发示例:复杂变量 246
11.4.1 模块设计 246
11.4.2 定义复杂变量 246
11.4.3 编译复杂变量 246
11.4.4 获取复杂变量 247
11.4.5 测试验证 247
11.5 总结 247
第12章 Nginx内存管理机制 249
12.1 基本系统调用 250
12.1.1 malloc 250
12.1.2 posix_memalign 251
12.1.3 free 251
12.2 块式内存池 252
12.2.1 结构定义 252
12.2.2 常量定义 255
12.2.3 创建内存池 255
12.2.4 分配内存 257
12.2.5 分配大块内存 258
12.2.6 分配小块内存 259
12.2.7 释放内存 264
12.2.8 清理机制 264
12.2.9 清空内存池 265
12.2.10 销毁内存池 266
12.3 页式内存池 267
12.3.1 结构定义 268
12.3.2 常量定义 270
12.3.3 初始化内存池 271
12.3.4 分配内存 273
12.3.5 分配大块内存 275
12.3.6 分配小块内存 277
12.3.7 释放内存 280
12.4 总结 282
第13章 Nginx进程机制 284
13.1 基本系统调用 284
13.1.1 errno 284
13.1.2 getrlimit 285
13.2 进程系统调用 285
13.2.1 getpid 285
13.2.2 fork 286
13.2.3 waitpid 286
13.3 信号系统调用 287
13.3.1 kill 287
13.3.2 sigactio

已确认勘误

次印刷

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

Nginx完全开发指南:使用C、C++、JavaScript和Lua
    • 名称
    • 类型
    • 大小

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

    意见反馈

    14:15

    关闭

    云图客服:

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

    或者您是想咨询:

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

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

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

    loading icon