NGINX经典教程
书籍作者:林静 |
ISBN:9787115589194 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:5853 |
创建日期:2023-03-31 |
发布日期:2023-03-31 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书分为5个部分,共32章:第一部分为基础入门篇,介绍基础配置和NGINX的运行机制与原理;第二部分为开源功能篇,剖析NGINX开源软件的功能模块,讲述各个模块的功能集合;第三部分为应用场景篇,通过特定的场景展现NGINX的能力及配置方法,站在使用者的角度阐述NGINX的复杂应用场景及注意事项;第四部分为商业软件篇,介绍NGINX商业版模块的增强能力;最后是NJS开发篇,使用NJS脚本化的方式扩展NGINX的能力。
本书既适合对NGINX开发感兴趣的软件开发工程师、系统工程师、软件架构师、DevOps人员、运维工程师阅读,也适合作为培训教材。
作者简介
林静
F5软件架构师,应用交付领域专家,开源爱好者,NGINX布道师,拥有TOGAF 9、CKA等认证。
刘旭峰
F5中国区金融行业技术总监,先后任职于IBM、F5等公司,专注于数据中心架构、金融科技应用、开源软件技术、IaaS/PaaS等领域。
章澍
F5中国区高级销售总监,领导过不同的行业销售团队,见证了各行业IT建设和发展的不同阶段,深度了解客户在NGINX使用中的技能痛点和需求。
廖健雄
F5 NGINX专家,在金融科技、开源软负载、业务高并发等领域具备丰富的架构规划、产品研发经验。
宗兆伟
F5资深软件研发工程师,涉及的技术领域包括数据存储、云原生生态、DevOps领域,深入理解云生态中的各种技术。
邹俊
先后供职于CA、EMC、Pivotal、F5等公司,积累了丰富的容器云平台相关经验,主要关注微服务、APIM、Kubernetes等行业技术的发展。
编辑推荐
1.F5 NGINX核心人员倾力打造,为您提供更系统化专业化的NGINX实践教程和案例
2.关注基础、用法和现代场景,多角度刨析助您在学习过程中适应,帮助您玩转NGINX实战
3.新技术趋势下解读,涵盖新的API、容器、Kubernetes、NJS语言、N+以及新协议的支持
4.附赠随书代码
目录
基础入门篇
第 1 章 NGINX 的起源与发展 2
1.1 NGINX 的历史 2
1.2 NGINX 的优良特性和功能 5
1.3 NGINX 发行版 7
1.4 本章小结 9
第 2 章 编译、安装和配置 10
2.1 下载源码 10
2.2 源码目录 11
2.3 编译准备 13
2.4 配置入门 18
2.5 本章小结 23
第 3 章 架构设计与工作模式 24
3.1 模块体系 24
3.2 进程模型 25
3.2.1 worker 进程的模型 27
3.2.2 缓存机制 28
3.3 事件驱动模型 28
3.4 本章小结 30
开源功能篇
第 4 章 HTTP 服务器的功能 32
4.1 HTTP 模块 32
4.2 处理HTTP 请求的阶段 34
4.3 HTTP 服务器的基本配置 41
4.3.1 配置层级 41
4.3.2 配置文件的结构及示例 42
4.3.3 详解HTTP 模块定义的指令42
4.4 本章小结 47
第 5 章 HTTP 模块的增强功能 48
5.1 HTTPS 服务器 48
5.1.1 HTTP 和HTTPS 的区别48
5.1.2 NGINX SSL 模块 50
5.2 HTTP/2 服务器 52
5.2.1 HTTP/2 协议 52
5.2.2 NGINX 的HTTP/2 模块54
5.3 HTTP 变量使用 54
5.4 HTTP 过滤功能 58
5.5 HTTP 压缩功能 60
5.6 本章小结 61
第 6 章 七层反向代理的功能 62
6.1 代理的概念 62
6.2 HTTP 反向代理的流程 64
6.3 本章小结 69
第 7 章 七层反向代理的补充功能 70
7.1 gRPC 模块的功能介绍 70
7.2 FastCGI 模块的功能介绍 72
7.3 uWSGI 模块的功能介绍 74
7.4 SCGI 模块的功能介绍 75
7.5 本章小结 76
第 8 章 四层反向代理的功能 77
8.1 NGINX 处理TCP/UDP 请求的7 个阶段 77
8.2 四层反向代理与负载均衡配置 78
8.3 本章小结 81
第 9 章 内容缓存功能 82
9.1 缓存的原理和功能 82
9.2 浏览器缓存 82
9.3 代理服务器缓存 86
9.3.1 代理服务器的HTTP 请求流程 86
9.3.2 代理服务器缓存 86
9.3.3 在NGINX 中配置代理缓存 87
9.3.4 代理服务器缓存的架构 91
9.4 本章小结 93
第 10 章 流媒体服务器 94
10.1 流媒体 94
10.2 常见的流媒体协议 95
10.2.1 渐进式下载与HTML595
10.2.2 常见的流媒体协议 95
10.2.3 多屏幕支持 97
10.3 NGINX 的RTMP 模块 98
10.3.1 安装RTMP 模块 98
10.3.2 配置RTMP 模块 98
10.4 本章小结 100
应用场景篇
第 11 章 应用层转发 102
11.1 基于HTTP URI 中的path 参数的动态转发 102
11.2 基于HTTP 头的动态转发 106
11.3 本章小结 107
第 12 章 流量加解密 108
12.1 SSL/TLS 卸载 108
12.2 SSL/TLS 透传 113
12.2.1 在正向代理中需要解决的核心问题 113
12.2.2 七层代理——HTTPCONNECT 隧道 114
12.2.3 HTTP CONNECT 隧道的代码实现 115
12.2.4 四层代理——L4 转发 118
12.2.5 L4 转发的代码实现 118
12.3 mTLS 和SSL/TLS 装载 121
12.3.1 配置NGINX 服务器实现双向认证 122
12.3.2 使用cURL 验证双向认证 123
12.3.3 NGINX Plus 动态加载SSL 证书 124
12.4 本章小结 126
第 13 章 缓存与内容加速 127
13.1 背景和需求 127
13.2 NGINX 的缓存机制 127
13.2.1 NGINX 的缓存处理流程127
13.2.2 NGINX 初始化缓存加载132
13.2.3 NGINX 缓存文件的淘汰管理 133
13.3 NGINX 缓存配置实践 134
13.3.1 控制HTTP 头 134
13.3.2 配置静态资源缓存135
13.3.3 配置动态资源缓存137
13.3.4 缓存清除 138
13.3.5 缓存的问题定位 139
13.3.6 缓存优化 141
13.4 自建CDN 141
13.5 本章小结 1441
第 14 章 NAT64 和ALG 网关 145
14.1 NAT64 的意义 145
14.2 ALG 的作用 145
14.3 外链天窗问题的解决方案 146
14.4 NAT64 和外链天窗问题的整体解决方案 147
14.5 本章小结 149
第 15 章 透传源IP 地址 150
15.1 背景和需求 150
15.2 X-Forwarded-For 字段 151
15.3 proxy_protocol 协议 155
15.4 透明代理 157
15.5 TOA 方案 159
15.6 本章小结 160
第 16 章 灰度发布与A/B 测试 161
16.1 背景和需求 161
16.2 灰度发布 162
16.3 A/B 测试 165
16.4 本章小结 167
第 17 章 安全与访问控制 168
17.1 NGINX OAuth 2.0 认证 168
17.1.1 为什么需要OAuth 168
17.1.2 OAuth 的基本原理 169
17.1.3 使用NGINX 实现授权码模式的OAuth 的思路 170
17.1.4 代码实现——使用NGINX 实现授权码模式的OAuth 174
17.2 基于ACL 的访问行为控制 178
17.3 减缓DDoS 攻击 180
17.4 零日漏洞防御 183
17.5 本章小结 184
第 18 章 对新协议的支持 185
18.1 DoT/DoH 185
18.2 HTTP/3 188
18.3 MQTT 189
18.4 本章小结 191
第 19 章 PaaS Ingress 192
19.1 什么是PaaS Ingress 192
19.2 在Kubernetes 上部署NGINX 作为Ingress Controller 194
19.2.1 部署NGINX Ingress Controller 195
19.2.2 扩展Ingress Resource功能的五种方式 200
19.3 Ingress Controller 的常见部署结构 212
19.3.1 PaaS 内部署 213
19.3.2 PaaS 外部署 215
19.3.3 内外混合部署 216
19.4 总结 217
第 20 章 微服务与API 网关 218
20.1 微服务 218
20.2 API 网关 220
20.3 典型的API 网关部署模式 225
20.4 本章小结 229
第 21 章 运维管理场景 230
21.1 灵活定制NGINX 日志 230
21.1.1 两种类型的NGINX 日志 230
21.1.2 利用access_log 监控应用性能 231
21.1.3 NGINX 日志的本地保存管理 233
21.1.4 NGINX 日志的集中管理 234
21.2 巧用NGINX 请求镜像 236
21.2.1 通过镜像实现请求复制 236
21.2.2 通过镜像实现流量放大 237
21.2.3 镜像请求与原请求的关联关系 238
21.2.4 通过镜像简化集群管理 241
21.3 探寻请求可观测 242
21.3.1 商业方案 244
21.3.2 开源方案 246
21.4 高效优化NGINX 性能 249
21.4.1 NGINX 的架构设计概述250
21.4.2 NGINX 性能调优方法论251
21.4.3 NGINX 性能调优实践 257
21.5 快速定位NGINX 问题 260
21.5.1 确保NGINX 节点运行正常 260
21.5.2 检查NGINX 的日志信息 262
21.5.3 规范配置,减少问题 264
21.6 在线实施NGINX 热升级 267
21.6.1 热升级原理及其状态过程 267
21.6.2 长连接下的热升级演示 268
21.7 轻松实现NGINX 的CI/CD271
21.7.1 标准的CI/CD 流程271
21.7.2 通过Jenkins 和Ansible自动部署NGINX 273
21.8 本章小结 275
商业软件篇
第 22 章 NGINX 公司及产品 278
22.1 公司介绍 278
22.2 产品介绍 279
22.3 NGINX 未来发展 285
22.4 本章小结 286
第 23 章 商业模块与指令增强 287
23.1 商业模块 287
23.2 商业指令 291
23.3 指令增强 294
23.4 本章小结 295
第 24 章 集群与管理 296
24.1 部署模式 296
24.2 集群管理 298
24.2.1 部署配置 299
24.2.2 日常监控 300
24.2.3 API 能力 301
24.2.4 集群状态同步 302
24.3 本章小结 304
第 25 章 访问认证 305
25.1 JWT 认证与NGINX Plus 305
25.1.1 JWT 基础 305
25.1.2 NGINX Plus JWT 模块介绍及实践 307
25.2 OIDC 认证 309
25.2.1 OIDC 认证流程 309
25.2.2 基于okta 的OIDC 配置实践 310
25.3 本章小结 317
第 26 章 服务发现 318
26.1 使用API 配置上游服务器 318
26.2 通过DNS 实现服务发现 320
26.2.1 在proxy_pass 指令中使用域名 320
26.2.2 在upstream 中使用域名 321
26.2.3 使用SRV 记录类型 321
26.3 集成Consul/etcd/ZooKeeper 322
26.3.1 使用Consul API 实现服务发现 323
26.3.2 使用Consul 的DNS SRV记录实现服务发现 324
26.4 集成confd 325
26.5 本章小结 328
第 27 章 API 管理 329
27.1 从API 形态和范畴看API 管理 329
27.2 从API 部署结构看API 管理331
27.3 NGINX API 管理产品介绍 332
27.4 本章小结 346
第 28 章 动态流量控制 347
28.1 动态流量控制的意义 347
28.2 IC 限流的需求和挑战 347
28.3 单实例限流 348
28.4 集群级限流 355
28.5 本章小结 359
第 29 章 多环境部署与云中弹性伸缩360
29.1 支持多环境安装 360
29.2 在公有云环境下订阅安装NGINX Plus 实例 361
29.3 在容器环境下安装NGINX Plus实例 364
29.4 公有云环境与容器环境下的弹性伸缩 367
29.5 本章小结 374
第 30 章 与F5 BIG-IP 集成 375
30.1 避免真实的上游服务器过载 375
30.2 NGINX 动态控制DNS 配置 381
30.3 本章小结 383
NJS 开发篇
第 31 章 NJS 的起源和价值 386
31.1 NJS 的基础——JavaScript 386
31.2 NJS 的历史与版本 389
31.3 NJS 的价值与目标规划 391
31.4 NJS 的运行机制和特点 392
31.5 本章小结 394
第 32 章 NJS 的安装与使用案例 395
32.1 使用场景概述 395
32.2 下载与安装 395
32.3 NJS 开发基础 398
32.4 使用NGINX 对象 409
32.5 NJS 模块的功能及应用案例 422
32.5.1 ngx_http_js_module模块 422
32.5.2 案例——带有内容预览功能的文件服务器 423
32.5.3 案例——日志内容脱敏 429
32.5.4 案例——把客户端流量平滑迁移到新服务器 432
32.5.5 ngx_stream_js_module模块 436
32.5.6 案例——PASV 模式下的FTP ALG 协议支持440
32.5.7 案例——为后端服务器实现虚拟补丁 444
32.6 本章小结 447