NGINX 經典教程

林靜 劉旭峰 章澍 廖健雄 宗兆偉 鄒俊

  • 出版商: 人民郵電
  • 出版日期: 2022-04-01
  • 定價: $719
  • 售價: 8.5$611
  • 語言: 簡體中文
  • 頁數: 447
  • ISBN: 7115589194
  • ISBN-13: 9787115589194
  • 下單後立即進貨 (約2週~3週)

  • NGINX 經典教程-preview-1
  • NGINX 經典教程-preview-2
NGINX 經典教程-preview-1

買這商品的人也買了...

商品描述

本書分為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 章 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