图书介绍
Nginx实战 基于Lua语言的配置、开发与架构详解PDF|Epub|txt|kindle电子书版本网盘下载
![Nginx实战 基于Lua语言的配置、开发与架构详解](https://www.shukui.net/cover/26/32410364.jpg)
- 王力,汤永全著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121354601
- 出版时间:2019
- 标注页数:325页
- 文件大小:154MB
- 文件页数:344页
- 主题词:互联网络-网络服务器-程序设计
PDF下载
下载说明
Nginx实战 基于Lua语言的配置、开发与架构详解PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 Nginx学前必知1
1.1 HTTP请求报文1
1.2 HTTP响应报文2
1.3 安装Nginx2
1.4 支持HTTPS4
1.5 添加模块4
1.6 小结4
第2章 基础配置5
2.1 Nginx指令和指令块5
2.2 Nginx基本配置说明6
2.2.1 main配置6
2.2.2 与客户端有关的配置7
2.2.3 server块7
2.2.4 location块8
2.3 include的使用9
2.4 常见配置9
2.4.1 常见配置注解10
2.4.2 常见配置实战技巧11
2.5 内置变量13
2.5.1 常见内置变量13
2.5.2 常见内置变量实战技巧15
2.6 小结16
第3章 强化基础配置17
3.1 牢记Context17
3.2 获取请求的IP地址18
3.2.1 获取用户的真实IP地址18
3.2.2 防止IP地址伪造19
3.2.3 后端服务器对IP地址的需求19
3.3 管理请求的行为20
3.3.1 限制IP地址的访问20
3.3.2 auth身份验证21
3.3.3 利用LDAP服务加强安全22
3.3.4 satisfy二选一的访问限制功能23
3.4 proxy代理23
3.4.1 proxy_pass请求代理规则24
3.4.2 减少后端服务器的网络开销24
3.4.3 控制请求头和请求体25
3.4.4 控制请求和后端服务器的交互时间26
3.5 upstream使用手册26
3.5.1 代理多台服务器27
3.5.2 故障转移28
3.5.3 负载均衡29
3.5.4 通过hash分片提升缓存命中率29
3.5.5 利用长连接提升性能30
3.5.6 利用resolver加速对内部域名的访问31
3.6 rewrite使用手册32
3.6.1 内部重定向32
3.6.2 域名跳转33
3.6.3 跳转POST请求34
3.6.4 设置变量的值34
3.7 限速白名单35
3.8 日志36
3.8.1 记录自定义变量36
3.8.2 日志格式规范36
3.8.3 日志存储37
3.9 HTTP执行阶段38
3.10 小结39
第4章 常用模块精解40
4.1 定制HTTP头信息40
4.1.1 使用ngx_http_headers_module设置响应头40
4.1.2 使用headers-more-nginx控制请求头和响应头43
4.2 第三方模块set-misc-nginx45
4.2.1 设置变量46
4.2.2 防止SQL注入46
4.2.3 字符串非转义和转义47
4.2.4 基于键值的集群分片48
4.2.5 base编码48
4.2.6 md5编码50
4.2.7 生成随机数50
4.2.8 本地时间的输出52
4.2.9 实战经验52
4.3 图片的处理53
4.3.1 image_filter图片处理53
4.3.2 采用渐进式方式打开JPEG图片55
4.3.3 WebP格式56
4.3.4 优化图片56
4.3.5 实战经验:动态切图58
4.4 TCP和UDP代理58
4.4.1 代理配置说明58
4.4.2 DNS服务的反向代理62
4.4.3 MySQL集群代理配置62
4.4.4 实战经验63
4.5 常用模块介绍63
4.5.1 基于访问IP地址跳转到对应城市63
4.5.2 修改响应内容65
4.5.3 零像素文件的生成及其作用66
4.5.4 图片的防盗链67
4.6 小结68
第5章 缓存系统69
5.1 缓存配置说明69
5.2 控制缓存有效期71
5.3 性能优化72
5.3.1 缓存未命中的最佳实践72
5.3.2 横向扩展最佳实践75
5.3.3 避免硬盘I/O阻塞76
5.3.4 集群模式77
5.4 高可用方案77
5.5 proxy_cache配置模板78
5.6 小结81
第6章 引入Lua82
6.1 引入Lua的原因82
6.2 Lua和LuaJIT83
6.3 环境搭建83
6.4 Lua的数据类型84
6.4.1 类型说明84
6.4.2 类型示例85
6.5 表达式89
6.5.1 算术运算符89
6.5.2 关系运算符90
6.5.3 逻辑运算符91
6.5.4 字符串连接和字符串长度计算92
6.5.5 运算符优先级93
6.6 变量93
6.6.1 全局变量94
6.6.2 局部变量94
6.6.3 变量赋值94
6.7 流程控制95
6.7.1 if-else95
6.7.2 for循环96
6.7.3 while循环97
6.7.4 break和return97
6.8 函数98
6.8.1 函数格式98
6.8.2 传参方式99
6.8.3 函数的创建位置100
6.9 模块100
6.9.1 模块格式101
6.9.2 加载模块101
6.10 Lua常见操作102
6.10.1 操作table102
6.10.2 定义字符串103
6.10.3 字符串连接104
6.11 引入Lua的插曲104
6.12 小结105
第7章 Lua-Nginx-Module常用指令106
7.1 Nginx和OpenResty106
7.2 安装Ngx Lua107
7.3 牢记Context108
7.4 Hello World108
7.5 避免I/O阻塞109
7.6 定义模块搜索路径109
7.6.1 定义Lua模块的搜索路径109
7.6.2 定义C模块的搜索路径110
7.7 读/写Nginx的内置变量110
7.8 控制请求头111
7.8.1 添加请求头111
7.8.2 清除请求头112
7.8.3 获取请求头112
7.9 控制响应头113
7.9.1 获取响应头113
7.9.2 修改响应头114
7.9.3 清除响应头116
7.10 读取请求体116
7.10.1 强制获取请求体116
7.10.2 用同步非阻塞方式获取请求体117
7.10.3 使用场景示例118
7.10.4 使用建议121
7.11 输出响应体121
7.11.1 异步发送响应体121
7.11.2 同步发送响应体122
7.12 正则表达式124
7.12.1 单一捕获124
7.12.2 全部捕获125
7.12.3 更高效的匹配和捕获126
7.12.4 替换数据128
7.12.5 转义符号129
7.13 子请求130
7.13.1 请求方法130
7.13.2 单一子请求130
7.13.3 并发子请求134
7.14 获取Nginx的环境变量135
7.14.1 获取环境所在的模块135
7.14.2 确认调试模式136
7.14.3 获取prefix路径136
7.14.4 获取Nginx的版本号136
7.14.5 获取configure信息136
7.14.6 获取Ngx_Lua的版本号137
7.14.7 判断worker进程是否退出137
7.14.8 获取worker进程的ID137
7.14.9 获取worker进程的数量137
7.15 定时任务138
7.15.1 创建定时任务138
7.15.2 性能优化140
7.15.3 禁用的Lua API141
7.16 常用指令142
7.16.1 请求重定向142
7.16.2 日志记录144
7.16.3 请求中断处理146
7.17 提升开发和测试效率149
7.17.1 断开客户端连接149
7.17.2 请求休眠150
7.17.3 获取系统时间150
7.17.4 编码与解码152
7.17.5 防止SQL注入154
7.17.6 判断是否为子请求155
7.17.7 设置MIME类型156
7.18 小结156
第8章 Ngx_Lua的执行阶段157
8.1 init_by_lua_block157
8.1.1 阶段说明157
8.1.2 初始化配置158
8.1.3 控制初始值159
8.1.4 init_by_lua_file160
8.1.5 可使用的Lua API指令160
8.2 init_worker_by_lua_block160
8.2.1 阶段说明160
8.2.2 启动Nginx的定时任务161
8.2.3 动态进行后端健康检查162
8.3 set_by_lua_block165
8.3.1 阶段说明165
8.3.2 变量赋值165
8.3.3 rewrite阶段的混用模式166
8.3.4 阻塞事件167
8.3.5 被禁用的Lua API指令167
8.4 rewrite_by_lua_block168
8.4.1 阶段说明168
8.4.2 利用rewrite_by_lua_no_postpone改变执行顺序168
8.4.3 阶段控制169
8.5 access_by_lua_block169
8.5.1 阶段说明169
8.5.2 利用access_by_lua_no_postpone改变执行顺序170
8.5.3 阶段控制170
8.5.4 动态配置黑白名单170
8.6 content_by_lua_block170
8.6.1 阶段说明170
8.6.2 动态调整执行文件的路径171
8.7 balancer_by_lua_block171
8.7.1 阶段说明171
8.7.2 被禁用的Lua API指令172
8.8 header_filter_by_lua_block172
8.8.1 阶段说明172
8.8.2 被禁用的Lua API指令173
8.9 body_filter_by_lua_block173
8.9.1 阶段说明173
8.9.2 控制响应体数据173
8.9.3 被禁用的Lua API指令175
8.10 log_by_lua_block176
8.10.1 阶段说明176
8.10.2 被禁用的Lua API指令176
8.11 Lua和ngx.ssl177
8.12 Ngx_Lua执行阶段177
8.13 小结180
第9章 Nginx与数据库的交互181
9.1 安装cjson181
9.2 与MySQL交互183
9.2.1 安装lua-resty-mysql模块183
9.2.2 读取MySQL数据183
9.2.3 执行多条SQL语句187
9.2.4 防止SQL注入189
9.3 与Redis交互189
9.3.1 安装lua-resty-redis189
9.3.2 读/写Redis189
9.3.3 管道命令191
9.3.4 密码登录193
9.3.5 其他执行命令194
9.4 与数据库交互的常见问题194
9.4.1 连接池194
9.4.2 读/写分离197
9.4.3 分离配置文件和代码197
9.5 小结198
第10章 缓存利器199
10.1 worker进程的共享内存200
10.1.1 创建共享内存区域200
10.1.2 操作共享内存201
10.1.3 制造消息队列205
10.1.4 lua-resty-core207
10.1.5 配置环境208
10.2 Lua模块下的共享内存209
10.2.1 安装lua-resty-lrucache209
10.2.2 使用lua-resty-lrucache进行缓存的方法209
10.3 当前请求在各执行阶段间的数据共享213
10.3.1 ngx.ctx的使用213
10.3.2 子请求和内部重定向的缓存区别214
10.4 利用共享内存配置动态IP地址认证215
10.5 缓存和数据库的交互218
10.5.1 从数据库获取数据218
10.5.2 避免出现因缓存失效引起的“风暴”223
10.6 小结228
第11章 动态管理upstream229
11.1 实战需求分析230
11.2 ngx_http_dyups_module230
11.2.1 安装ngx_http_dyups_module230
11.2.2 动态管理upstream230
11.2.3 确保upstream数据的完整性232
11.3 nginx-upsync-module233
11.3.1 安装nginx-upsync-module和Consul233
11.3.2 Consul的键值操作234
11.3.3 动态管理upstream235
11.3.4 验证动态配置功能237
11.3.5 高可用、高并发设计237
11.4 基于balancer_by_lua_block的灵活控制238
11.5 小结239
第12章 Nginx日志分析系统240
12.1 实战需求分析240
12.2 ngxtop实时分析241
12.3 Flume方案的日志分析243
12.4 智能化nginx_log_analysis244
12.4.1 架构重构244
12.4.2 日志远程传输245
12.4.3 时序数据库245
12.4.4 日志规则设计245
12.5 lua-resty-logger-socket传输方案246
12.5.1 安装lua-resty-logger-socke246
12.5.2 远程传输配置247
12.5.3 参数解读248
12.6 时序数据库InfluxDB249
12.6.1 安装InfluxDB249
12.6.2 基本概念和操作249
12.6.3 数据分析之查询函数250
12.6.4 数据存放之保留策略251
12.6.5 定时任务之连续查询251
12.6.6 客户端操作之API252
12.6.7 使用UDP模式传输数据253
12.7 利用lua-resty-http实现API交互254
12.7.1 安装lua-resty-http254
12.7.2 使用方式254
12.8 提升InfluxDB性能255
12.9 小结255
第13章 静态容灾系统256
13.1 荆棘之路257
13.2 设计之路259
13.3 架构流程图261
13.3.1 反向代理系统261
13.3.2 日志分析系统261
13.3.3 后台系统261
13.3.4 爬虫系统262
13.3.5 容灾的缓存系统262
13.3.6 时间版本的用途263
13.3.7 异地容灾263
13.4 核心代码解说264
13.4.1 Ngx_Lua应用264
13.4.2 爬虫和日志系统的关系266
13.4.3 全部容灾和部分容灾功能266
13.5 静态容灾的智能关闭方案267
13.5.1 从日志分析系统中复制请求267
13.5.2 利用goreplay复制流量267
13.5.3 Nginx的镜像功能268
13.5.4 灰度验证容灾系统缓存269
13.6 小结269
第14章 深入挖掘反向代理270
14.1 验证码防御中心270
14.2 鉴权管理中心272
14.2.1 利用auth_request管理鉴权272
14.2.2 利用Ngx_Lua子请求实现鉴权功能273
14.3 并行访问274
14.3.1 轻线程的启动和终止275
14.3.2 等待和终止轻线程276
14.3.3 URL的外部合并和内部并发278
14.3.4 使用cosocket实现外部访问281
14.4 小结281
第15章 爬虫282
15.1 区分搜索引擎爬虫和恶意爬虫282
15.2 应对搜索引擎爬虫284
15.2.1 搜索引擎的User-Agent284
15.2.2 Robots协议285
15.2.3 控制搜索引擎爬虫实战286
15.3 应对恶意爬虫288
15.3.1 发现恶意爬虫288
15.3.2 抵御恶意爬虫之禁止访问289
15.3.3 抵御恶意爬虫之验证码拦截290
15.4 小插曲——使用假数据迷惑恶意爬虫290
15.5 小结291
第16章 性能分析和优化292
16.1 性能分析场景搭建292
16.1.1 安装SystemTap292
16.1.2 LuaJIT的Debug模式293
16.1.3 开启PCRE的Debug模式294
16.1.4 分析工具下载294
16.1.5 找出不支持Debug模式的lib库295
16.2 流量复制295
16.3 各项指标分析和优化建议295
16.3.1 连接池使用状态分析295
16.3.2 找出读/写频繁的文件297
16.3.3 执行阶段耗时分析297
16.3.4 HTTP连接数和文件打开数分析298
16.3.5 找出CPU“偷窃者”298
16.3.6 正则表达式耗时分析299
16.3.7 找出消耗CPU资源较多的指令301
16.3.8 利用火焰图展示和分析数据303
16.4 检查全局变量305
16.5 小结305
第17章 值得拥有的OpenResty306
17.1 OPM307
17.2 使用DNS提升访问效率309
17.3 TCP和UDP服务310
17.4 多层级缓存312
17.5 lua-resty-core扩展313
17.5.1 字符串分割313
17.5.2 Nginx进程管理313
17.6 全局唯一标识符UUID315
17.7 “全家福”awesome-resty316
17.8 OpenResty,未来!316
第18章 开发环境下的常见问题317
18.1 被截断的响应体317
18.2 “邪恶”的if317
18.3 “贪婪”的正则匹配318
18.4 规范HTTP状态码319
18.5 规范URL319
18.6 proxy_set_header的误操作320
18.7 开发环境下的证书问题320
18.8 深层次的错误重定向323
18.9 压测环境下的限速和短连接323
18.10 小结323