Nginx_PDF ~ 深入理解Nginx模組開發與架構解析第2版
Nginx_PDF ~ 深入理解Nginx模組開發與架構解析第2版 [PDF電子書]
前言; 5
第一部分 Nginx能幫我們做什麼; 9
第1章 研究Nginx前的準備工作; 9
1.1 Nginx是什麼; 12
1.2 為什麼選擇Nginx; 15
1.3 準備工作; 16
1.4 編譯安裝Nginx; 17
1.5 configure詳解; 21
1.6 Nginx的命令列控制; 25
1.7 小結; 29
第2章 Nginx的配置; 32
2.1 運行中的Nginx進程間的關係; 33
2.2 Nginx配置的通用語法; 44
2.3 Nginx服務的基本配置; 48
2.4 用HTTP核心模組配置一個靜態Web伺服器; 49
2.5 用HTTP proxy module配置一個反向代理伺服器; 52
2.6 小結; 56
第二部分 如何編寫HTTP模組; 58
第3章 開發一個簡單的HTTP模組; 59
3.1 如何調用HTTP模組; 60
3.2 準備工作; 64
3.3 如何將自己的HTTP模組編譯進Nginx; 69
3.4 HTTP模組的資料結構; 73
3.5 定義自己的HTTP模組; 77
3.6 處理用戶請求; 80
3.7 發送回應; 84
3.8 將磁片檔作為包體發送; 89
3.9 用C++語言編寫HTTP模組; 93
3.10 小結; 97
第4章 配置、error日誌和請求上下文; 102
4.1 http配置項的使用場景; 107
4.2 怎樣使用http配置; 112
4.3 HTTP配置模型; 117
4.4 error日誌的用法; 122
4.5 請求的上下文; 124
4.6 小結; 125
第5章 訪問協力廠商服務; 126
5.1 upstream的使用方式; 127
5.2 回檔方法的執行場景; 130
5.3 使用upstream的示例; 134
5.4 subrequest的使用方式; 140
5.5 subrequest執行過程中的主要場景; 149
5.6 subrequest使用的例子; 152
5.7 小結; 155
第6章 開發一個簡單的HTTP過濾模組; 155
6.1 過濾模組的意義; 165
6.2 過濾模組的調用順序; 165
6.3 HTTP過濾模組的開發步驟; 171
6.4 HTTP過濾模組的簡單例子; 175
6.5 小結; 183
第7章 Nginx提供的高級資料結構; 188
7.1 Nginx提供的高級資料結構概述; 192
7.2 ngx_queue_t雙向鏈表; 200
7.3 ngx_array_t動態陣列; 203
7.4 ngx_list_t單向鏈表; 208
7.5 ngx_rbtree_t紅黑樹; 215
7.6 ngx_radix_tree_t基數樹; 221
7.7 支持萬用字元的散列表; 225
7.8 小結; 228
第三部分 深入Nginx; 229
第8章 Nginx基礎架構; 230
8.1 Web伺服器設計中的關鍵約束; 232
8.2 Nginx的架構設計; 237
8.3 Nginx框架中的核心結構體ngx_cycle_t; 243
8.4 Nginx啟動時框架的處理流程; 248
8.5 worker進程是如何工作的; 252
8.6 master進程是如何工作的; 256
8.7 ngx_pool_t記憶體池; 260
8.8 小結; 263
第9章 事件模組; 268
9.1 事件處理框架概述; 275
9.2 Nginx事件的定義; 279
9.3 Nginx連接的定義; 283
9.4 ngx_events_module核心模組; 286
9.5 ngx_event_core_module事件模組; 289
9.6 epoll事件驅動模組; 291
9.7 計時器事件; 292
9.8 事件驅動框架的處理流程; 294
9.9 檔的非同步I/O; 298
9.10 TCP協議與Nginx; 305
9.11 小結; 311
第10章 HTTP框架的初始化; 318
10.1 HTTP框架概述; 321
10.2 管理HTTP模組的配置項; 327
10.3 監聽埠的管理; 334
10.4 server的快速檢索; 340
10.5 location的快速檢索; 346
10.6 HTTP請求的11個處理階段; 350
10.7 HTTP框架的初始化流程; 352
10.8 小結; 356
第11章 HTTP框架的執行流程; 362
11.1 HTTP框架執行流程概述; 363
11.2 新連接建立時的行為; 368
11.3 第一次可讀事件的處理; 376
11.4 接收HTTP請求行; 377
11.5 接收HTTP頭部; 378
11.6 處理HTTP請求; 380
11.7 subrequest與post請求; 383
11.8 處理HTTP包體; 388
11.9 發送HTTP回應; 390
11.10 結束HTTP請求; 397
11.11 小結; 403
第12章 upstream機制的設計與實現; 407
12.1 upstream機制概述; 408
12.2 啟動upstream; 409
12.3 與上游伺服器建立連接; 411
12.4 發送請求到上游伺服器; 416
12.5 接收上游伺服器的回應頭部; 420
12.6 不轉發回應時的處理流程; 425
12.7 以下游網速優先來轉發回應; 427
12.8 以上游網速優先來轉發回應; 428
12.9 結束upstream請求; 434
12.10 小結; 439
第13章 郵件代理模組; 442
13.1 郵件代理伺服器的功能; 447
13.2 郵件模組的處理框架; 449
13.3 初始化請求; 453
13.4 接收並解析用戶端請求; 460
13.5 郵件認證; 465
13.6 與上游郵件伺服器間的認證交互; 470
13.7 透傳上游郵件伺服器與用戶端間的流; 473
13.8 小結; 474
第14章 進程間的通信機制; 475
14.1 概述; 476
14.2 共用記憶體; 480
14.3 原子操作; 485
14.4 Nginx頻道; 490
14.5 信號; 495
14.6 信號量; 497
14.7 文件鎖; 497
14.8 互斥鎖; 504
14.9 小結; 511
第15章 變數; 514
15.1 使用內部變數開發模組; 519
15.2 內部變數工作原理; 523
15.3 定義內部變數; 529
15.4 外部變數與腳本引擎; 532
15.5 小結; 537
第16章 slab共用記憶體; 543
16.1 操作slab共用記憶體的方法; 545
16.2 使用slab共用記憶體池的例子; 546
16.3 slab記憶體管理的實現原理; 548
16.4 小結; 554