店铺推荐
【推荐语】
1.F5 NGINX核心人员倾力打造,为您提供更系统化专业化的NGINX实践教程和案例

2.关注基础、用法和现代场景,多角度刨析助您在学习过程中适应,帮助您玩转NGINX实战

3.新技术趋势下解读,涵盖新的API、容器、Kubernetes、NJS语言、N+以及新协议的支持

4.附赠随书代码
【作者】
林静,F5软件架构师,应用交付领域专家,开源爱好者,NGINX布道师,拥有TOGAF9、CKA等认证。
【内容】
本书分为5个部分,共32章:第一部分为基础入门篇,介绍基础配置和NGINX的运行机制与原理;第二部分为开源功能篇,剖析NGINX开源软件的功能模块,讲述各个模块的功能集合;第三部分为应用场景篇,通过特定的场景展现NGINX的能力及配置方法,站在使用者的角度阐述NGINX的复杂应用场景及注意事项;第四部分为商业软件篇,介绍NGINX商业版模块的增强能力;最后是NJS开发篇,使用NJS脚本化的方式扩展NGINX的能力。本书既适合对NGINX开发感兴趣的软件开发工程师、系统工程师、软件架构师、DevOps人员、运维工程师阅读,也适合作为培训教材。
【目录】
基础入门篇
第1章NGINX的起源与发展2
1.1NGINX的历史2
1.2NGINX的优良特性和功能5
1.3NGINX发行版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.1worker进程的模型27
3.2.2缓存机制28
3.3事件驱动模型28
3.4本章小结30
开源功能篇
第4章HTTP服务器的功能32
4.1HTTP模块32
4.2处理HTTP请求的阶段34
4.3HTTP服务器的基本配置41
4.3.1配置层级41
4.3.2配置文件的结构及示例42
4.3.3详解HTTP模块定义的指令42
4.4本章小结47
第5章HTTP模块的增强功能48
5.1HTTPS服务器48
5.1.1HTTP和HTTPS的区别48
5.1.2NGINXSSL模块50
5.2HTTP/2服务器52
5.2.1HTTP/2协议52
5.2.2NGINX的HTTP/2模块54
5.3HTTP变量使用54
5.4HTTP过滤功能58
5.5HTTP压缩功能60
5.6本章小结61
第6章七层反向代理的功能62
6.1代理的概念62
6.2HTTP反向代理的流程64
6.3本章小结69
第7章七层反向代理的补充功能70
7.1gRPC模块的功能介绍70
7.2FastCGI模块的功能介绍72
7.3uWSGI模块的功能介绍74
7.4SCGI模块的功能介绍75
7.5本章小结76
第8章四层反向代理的功能77
8.1NGINX处理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.3NGINX的RTMP模块98
10.3.1安装RTMP模块98
10.3.2配置RTMP模块98
10.4本章小结100
应用场景篇
第11章应用层转发102
11.1基于HTTPURI中的path参数的动态转发102
11.2基于HTTP头的动态转发106
11.3本章小结107
第12章流量加解密108
12.1SSL/TLS卸载108
12.2SSL/TLS透传113
12.2.1在正向代理中需要解决的核心问题113
12.2.2七层代理——HTTPCONNECT隧道114
12.2.3HTTPCONNECT隧道的代码实现115
12.2.4四层代理——L4转发118
12.2.5L4转发的代码实现118
12.3mTLS和SSL/TLS装载121
12.3.1配置NGINX服务器实现双向认证122
12.3.2使用cURL验证双向认证123
12.3.3NGINXPlus动态加载SSL证书124
12.4本章小结126
第13章缓存与内容加速127
13.1背景和需求127
13.2NGINX的缓存机制127
13.2.1NGINX的缓存处理流程127
13.2.2NGINX初始化缓存加载132
13.2.3NGINX缓存文件的淘汰管理133
13.3NGINX缓存配置实践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自建CDN141
13.5本章小结1441
第14章NAT64和ALG网关145
14.1NAT64的意义145
14.2ALG的作用145
14.3外链天窗问题的解决方案146
14.4NAT64和外链天窗问题的整体解决方案147
14.5本章小结149
第15章透传源IP地址150
15.1背景和需求150
15.2X-Forwarded-For字段151
15.3proxy_protocol协议155
15.4透明代理157
15.5TOA方案159
15.6本章小结160
第16章灰度发布与A/B测试161
16.1背景和需求161
16.2灰度发布162
16.3A/B测试165
16.4本章小结167
第17章安全与访问控制168
17.1NGINXOAuth2.0认证168
17.1.1为什么需要OAuth168
17.1.2OAuth的基本原理169
17.1.3使用NGINX实现授权码模式的OAuth的思路170
17.1.4代码实现——使用NGINX实现授权码模式的OAuth174
17.2基于ACL的访问行为控制178
17.3减缓DDoS攻击180
17.4零日漏洞防御183
17.5本章小结184
第18章对新协议的支持185
18.1DoT/DoH185
18.2HTTP/3188
18.3MQTT189
18.4本章小结191
第19章PaaSIngress192
19.1什么是PaaSIngress192
19.2在Kubernetes上部署NGINX作为IngressController194
19.2.1部署NGINXIngressController195
19.2.2扩展IngressResource功能的五种方式200
19.3IngressController的常见部署结构212
19.3.1PaaS内部署213
19.3.2PaaS外部署215
19.3.3内外混合部署216
19.4总结217
第20章微服务与API网关218
20.1微服务218
20.2API网关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.3NGINX日志的本地保存管理233
21.1.4NGINX日志的集中管理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.1NGINX的架构设计概述250
21.4.2NGINX性能调优方法论251
21.4.3NGINX性能调优实践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自动部署NGINX273
21.8本章小结275
商业软件篇
第22章NGINX公司及产品278
22.1公司介绍278
22.2产品介绍279
22.3NGINX未来发展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.3API能力301
24.2.4集群状态同步302
24.3本章小结304
第25章访问认证305
25.1JWT认证与NGINXPlus305
25.1.1JWT基础305
25.1.2NGINXPlusJWT模块介绍及实践307
25.2OIDC认证309
25.2.1OIDC认证流程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/ZooKeeper322
26.3.1使用ConsulAPI实现服务发现323
26.3.2使用Consul的DNSSRV记录实现服务发现324
26.4集成confd325
26.5本章小结328
第27章API管理329
27.1从API形态和范畴看API管理329
27.2从API部署结构看API管理331
27.3NGINXAPI管理产品介绍332
27.4本章小结346
第28章动态流量控制347
28.1动态流量控制的意义347
28.2IC限流的需求和挑战347
28.3单实例限流348
28.4集群级限流355
28.5本章小结359
第29章多环境部署与云中弹性伸缩360
29.1支持多环境安装360
29.2在公有云环境下订阅安装NGINXPlus实例361
29.3在容器环境下安装NGINXPlus实例364
29.4公有云环境与容器环境下的弹性伸缩367
29.5本章小结374
第30章与F5BIG-IP集成375
30.1避免真实的上游服务器过载375
30.2NGINX动态控制DNS配置381
30.3本章小结383
NJS开发篇
第31章NJS的起源和价值386
31.1NJS的基础——JavaScript386
31.2NJS的历史与版本389
31.3NJS的价值与目标规划391
31.4NJS的运行机制和特点392
31.5本章小结394
第32章NJS的安装与使用案例395
32.1使用场景概述395
32.2下载与安装395
32.3NJS开发基础398
32.4使用NGINX对象409
32.5NJS模块的功能及应用案例422
32.5.1ngx_http_js_module模块422
32.5.2案例——带有内容预览功能的文件服务器423
32.5.3案例——日志内容脱敏429
32.5.4案例——把客户端流量平滑迁移到新服务器432
32.5.5ngx_stream_js_module模块436
32.5.6案例——PASV模式下的FTPALG协议支持440
32.5.7案例——为后端服务器实现虚拟补丁444
32.6本章小结447
【媒体评论】
应用流量技术复杂,企业掌握和使用负载均衡器、服务网关面临着很大的挑战。NGINX提供了一个高性能、易使用、安全可靠的开源平台,为企业现代化应用提供了坚实的保障。本书提供了丰富的NGINX实践案例,是一本干货满满的参考书,可以帮助用户更好地理解与使用NGINX。 ——刘博,中国农业银行研发中心技术平台工程师 本书的重点立足于实际应用场景,通过NGINX在各个不同场景的部署与配置方式,完整地梳理了一个大型企业在多云架构、微服务、复杂的访问调度等场景下以及面对新技术挑战时的解决方案,对于读者和用户都是非常实用的解决思路指引与解决方案参考。 ——曾炜,中国工商银行软件开发中心高级技术经理,网络与安全专家 NGINX自诞生至今已经十几年了,一直处于活跃开发状态,其新版本持续增加强大的功能,满足云计算、微服务等各种场景下的技术应用需求。市面上的图书或侧重NGINX源码的解析,或侧重NGINX原理及配置的介绍,但站在使用者视角对NGINX复杂应用场景的解读和指导性资料相对稀少。本书的一大亮点是,作者通过特定的场景展现NGINX的能力及配置方法,涵盖了Web服务器、反向代理、DevOps、API、Kubernetes、NJS开发、安全等当前NGINX的各种使用场景,注重实战,对使用NGINX的开发工程师、软件架构师、运维工程师均具有重要的参考价值。 ——王丽丽,中信银行架构师,开源治理专家 NGINX在我身边的工作环境中,正逐渐变得无处不在。对于处在数字化转型过程中的银行业而言,NGINX的高并发处理能力与丰富灵活的功能特性,使得它成为数据中心世界里非常重要的一个组成部分。细读一下这本书的目录,你会发现原来通过NGINX还可以做更多的事情,而不需要追加IT投资去进行重复建设。 ——王钢,江苏银行科技部总经理助理
返回顶部