《OpenResty完全开发指南:构建百万级别并发的Web应用》由一线技术专家根据自身的工作经历用心编写而成,关键包含OpenResty的构成、运作服务平台、工作中語言、內部管理机制、作用插口、各种各样服务项目的配备和开发方法。
这书作者技术基本功强,写作能力高,创作的书籍不唯销售市场论,不唯可谓是论,只写自身一线工作工作经验,针对自身的技术书籍出版也几乎全是一丝不苟,一心只求大伙儿无私奉献高品质、好用且实战演练的出色技术书籍!
OpenResty是一个根据Nginx的高性能Web服务平台,可以便捷地构建解决极高高并发的动态性Web运用、Web服务和动态性网关ip。与目前的别的编程语言/自然环境对比,OpenResty拥有高性能、高协调能力、便于学习培训和拓展等很多优势,近些年获得了愈来愈多开发人员的关心,也拥有许多取得成功的运用案例,如Adobe、Dropbox、GitHub等著名企业都根据OpenResty搭建了自身的后端开发业务流程运用。OpenResty内置健全的帮助文件,开发设计小区也很活跃性,但有关的学习材料——非常是中文材料较少。这书根据作者很多年应用OpenResty的工作经验,系统化论述了OpenResty有关的各层面专业知识和关键点,协助阅读者迅速把握这一高效率实用的Web软件开发平台,从而完成HTTP/HTTPS/TCP/UDP等多种多样网络技术应用。这书构造认真细致、详略得当,具备极强的应用性,合适众多开发软件技术工程师、系统软件运营工程师、编程爱好者和软件工程专业学员阅读文章参照。
目录
- 第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