作 者:林靜 等 著
定 價:119.8
出 版 社:人民郵電出版社
出版日期:2022年04月01日
頁 數:460
裝 幀:平裝
ISBN:9787115589194
1.F5 NGINX核心人員傾力打造,為您提供更繫統化專業化的NGINX實踐教程和案例2.關注基礎、用法和現代場景,多角度刨析助您在學習過程中適應,幫助您玩轉NGINX實戰3.新技術趨勢下解讀,涵蓋新的API、容器、Kubernetes、NJS語言、N+以及新協議的支持4.附贈隨書代碼
●基礎入門篇
第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
本書分為5個部分,共32章:第一部分為基礎入門篇,介紹基礎配置和NGINX的運行機制與原理;第二部分為開源功能篇,剖析NGINX開源軟件的功能模塊,講述各個模塊的功能集合;第三部分為應用場景篇,通過特定的場景展現NGINX的能力及配置方法,站在使用者的角度闡述NGINX的復雜應用場景及注意事項;第四部分為商業軟件篇,介紹NGINX商業版模塊的增強能力;最後是NJS開發篇,使用NJS腳本化的方式擴展NGINX的能力。本書既適合對NGINX開發感興趣的軟件開發工程師、繫統工程師、軟件架構師、DevOps人員、運維工程師閱讀,也適合作為培訓教材。
林靜 等 著
林靜,F5軟件架構師,應用交付領域專家,開源愛好者,NGINX布道師,擁有TOGAF9、CKA等認證。