第0章 导读 1
0.1 关于本书 1
0.2 读者对象 1
0.3 读者要求 3
0.4 运行环境 3
0.5 本书的结构 3
0.6 如何阅读本书 5
0.7 本书的源码 5
第1章 总论 7
1.1 简介 7
1.2 历史 8
1.3 组成 9
1.4 版本 11
1.5 安装 12
1.5.1 直接安装 12
1.5.2 源码安装 13
1.5.3 定制安装 13
1.6 目录结构 14
1.7 启停服务 15
1.8 组件管理工具 15
1.9 命令行工具 16
1.10 参考手册 18
1.11 性能对比 18
1.12 应用架构 21
1.13 总结 22
第2章 Nginx平台 23
2.1 简介 23
2.2 进程模型 24
2.3 配置文件 25
2.4 变量 26
2.5 HTTP服务 27
2.5.1 server配置 28
2.5.2 location配置 28
2.6 TCP/UDP服务 29
2.7 反向代理 29
2.7.1 上游集群 30
2.7.2 代理转发 31
2.8 运行日志 31
2.8.1 访问日志 32
2.8.2 错误日志 32
2.9 总结 32
第3章 Lua语言 35
3.1 简介 35
3.2 注释 36
3.3 数据类型 36
3.4 字符串 37
3.5 变量 38
3.6 运算 39
3.6.1 算术运算 39
3.6.2 关系运算 39
3.6.3 逻辑运算 40
3.6.4 字符串运算 40
3.6.5 注意事项 41
3.7 控制语句 41
3.7.1 语句块 41
3.7.2 赋值语句 41
3.7.3 分支语句 42
3.7.4 循环语句 43
3.8 函数 44
3.8.1 定义函数 44
3.8.2 参数和返回值 45
3.9 表 46
3.9.1 定义表 46
3.9.2 操作表 46
3.9.3 范围循环 47
3.9.4 作为函数的参数 48
3.10 模块 48
3.11 面向对象 49
3.11.1 基本特性 49
3.11.2 原型模式 50
3.11.3 self参数 51
3.12 标准库 51
3.12.1 base库 52
3.12.2 package库 52
3.12.3 string库 53
3.12.4 table库 54
3.12.5 math库 55
3.12.6 io库 56
3.12.7 os库 57
3.12.8 debug库 57
3.12.9 使用技巧 57
3.13 高级特性 58
3.13.1 闭包 58
3.13.2 保护调用 58
3.13.3 可变参数 59
3.14 总结 59
第4章 LuaJIT环境 61
4.1 简介 61
4.2 goto语句 62
4.3 jit库 62
4.4 table库 63
4.5 bit库 63
4.6 ffi库 65
4.7 编译为字节 码 67
4.8 编译为机器码 68
4.9 总结 68
第5章 开发概述 71
5.1 应用示例 71
5.1.1 编码实现 71
5.1.2 测试验证 73
5.2 运行命令 74
5.3 目录结构 75
5.4 配置指令 76
5.5 运行机制 77
5.5.1 处理阶段 77
5.5.2 执行程序 79
5.5.3 定时任务 81
5.5.4 流程图 81
5.6 功能接口 83
5.7 核心库 83
5.8 应用开发流程 84
5.9 总结 85
第6章 基础功能 87
6.1 系统信息 87
6.2 运行日志 88
6.3 时间日期 89
6.3.1 当前时间 90
6.3.2 时间戳 90
6.3.3 格式化时间戳 90
6.3.4 更新时间 91
6.3.5 睡眠 91
6.4 数据编码 92
6.4.1 Base64 92
6.4.2 JSON 92
6.4.3 MessagePack 94
6.5 正则表达式 95
6.5.1 配置指令 95
6.5.2 匹配选项 96
6.5.3 匹配 96
6.5.4 查找 98
6.5.5 替换 99
6.5.6 切分 100
6.6 高速缓存 101
6.6.1 创建缓存 101
6.6.2 使用缓存 102
6.7 总结 103
第7章 HTTP服务 105
7.1 简介 105
7.2 配置指令 106
7.3 常量 107
7.3.1 状态码 107
7.3.2 请求方法 108
7.4 变量 108
7.4.1 读变量 108
7.4.2 写变量 109
7.5 基本信息 110
7.5.1 请求来源 110
7.5.2 起始时间 110
7.5.3 请求头 110
7.5.4 暂存数据 111
7.6 请求行 111
7.6.1 版本 112
7.6.2 方法 112
7.6.3 地址 112
7.6.4 参数 113
7.7 请求头 114
7.7.1 读取数据 114
7.7.2 改写数据 115
7.8 请求体 115
7.8.1 丢弃数据 115
7.8.2 读取数据 115
7.8.3 改写数据 116
7.9 响应头 117
7.9.1 改写数据 117
7.9.2 发送数据 118
7.9.3 过滤数据 118
7.10 响应体 118
7.10.1 发送数据 118
7.10.2 过滤数据 119
7.11 手动收发数据 120
7.12 流程控制 121
7.12.1 重定向请求 121
7.12.2 终止请求 121
7.13 检测断连 122
7.14 综合示例 123
7.15 总结 126
第8章 访问后端 127
8.1 简介 127
8.2 子请求 128
8.2.1 接口说明 128
8.2.2 应用示例 129
8.2.3 使用建议 130
8.3 协程套接字 131
8.3.1 配置指令 131
8.3.2 创建对象 132
8.3.3 超时设置 133
8.3.4 建立连接 133
8.3.5 复用连接 134
8.3.6 关闭连接 134
8.3.7 发送数据 135
8.3.8 接收数据 135
8.3.9 应用示例 136
8.4 DNS客户端 137
8.4.1 创建对象 138
8.4.2 查询地址 138
8.4.3 缓存地址 139
8.5 HTTP客户端 140
8.5.1 创建对象 140
8.5.2 发送请求 140
8.6 WebSocket客户端 142
8.6.1 创建对象 142
8.6.2 建立连接 143
8.6.3 关闭连接 143
8.6.4 复用连接 143
8.6.5 发送数据 144
8.6.6 接收数据 144
8.7 Redis客户端 145
8.7.1 创建对象 145
8.7.2 建立连接 145
8.7.3 关闭连接 146
8.7.4 复用连接 146
8.7.5 执行命令 146
8.7.6 管道 147
8.7.7 脚本 148
8.8 MySQL客户端 148
8.8.1 创建对象 149
8.8.2 建立连接 149
8.8.3 服务器版本号 150
8.8.4 关闭连接 150
8.8.5 复用连接 150
8.8.6 简单查询 150
8.8.7 高级查询 152
8.8.8 防止SQL注入 152
8.9 总结 153
第9章 反向代理 155
9.1 简介 155
9.2 上游集群 156
9.2.1 静态服务器信息 157
9.2.2 动态服务器信息 158
9.2.3 服务器下线 159
9.2.4 当前上游集群 159
9.3 负载均衡 160
9.3.1 使用方式 160
9.3.2 功能接口 161
9.4 总结 162
第10章 高级功能 163
10.1 共享内存 163
10.1.1 配置指令 163
10.1.2 写操作 164
10.1.3 读操作 165
10.1.4 删除操作 166
10.1.5 计数操作 166
10.1.6 队列操作 166
10.1.7 过期操作 167
10.1.8 其他操作 168
10.2 定时器 168
10.2.1 配置指令 168
10.2.2 单次任务 169
10.2.3 周期任务 170
10.3 进程管理 171
10.3.1 进程类型 171
10.3.2 工作进程 172
10.3.3 监控进程 173
10.3.4 特权进程 173
10.4 轻量级线程 174
10.4.1 启动线程 175
10.4.2 等待线程 175
10.4.3 挂起线程 176
10.4.4 停止线程 177
10.4.5 信号量 178
10.5 总结 179
第11章 HTTPS服务 181
11.1 简介 181
11.1.1 密码学 181
11.1.2 网络协议 182
11.2 服务配置 184
11.3 应用开发 185
11.4 基本信息 185
11.4.1 协议版本号 185
11.4.2 主机名 186
11.4.3 地址 186
11.5 加载证书 187
11.5.1 清除证书 187
11.5.2 设置证书 187
11.5.3 设置私钥 188
11.5.4 测试验证 189
11.6 查验证书 189
11.6.1 发送查询 189
11.6.2 通知客户端 191
11.7 会话复用 191
11.7.1 Session ID 191
11.7.2 Session Tickets 193
11.8 总结 193
第12章 HTTP2服务 195
12.1 简介 195
12.2 服务配置 196
12.3 应用开发 197
12.4 测试验证 197
12.5 总结 198
第13章 WebSocket服务 199
13.1 简介 199
13.2 服务配置 200
13.3 应用开发 200
13.4 总结 202
第14章 TCP/UDP服务 203
14.1 简介 203
14.2 配置指令 204
14.3 运行机制 205
14.3.1 处理阶段 205
14.3.2 执行程序 206
14.3.3 流程图 206
14.4 功能接口 208
14.5 应用示例 208
14.6 总结 210
第15章 结束语 211
附录A 推荐书目 215
附录B 定制OpenResty 217