《深入剖析Nginx》是2013年人民郵電出版社出版的圖書,作者是高群凱。本書重點在於通過剖析Nginx的原始碼,探究其功能結構及其內部實現原理。
基本介紹
- 作者:高群凱
- ISBN:9787115307620
- 頁數:334
- 定價:59.00元
- 出版社:人民郵電出版社
- 出版時間:2013-5
- 裝幀:平裝
內容介紹,作者介紹,作品目錄,
內容介紹
《深入剖析Nginx》不是一本關於Nginx配置指令如何使用的介紹手冊。
全書共14章和3個附錄。
首先介紹了開始剖析Nginx原始碼前的準備工作,以及跟蹤和調試的方法;
然後,分別深入分析了Nginx的進程模型、數據結構、配置指令、主要功能模組、I/O事件處理、變數機制、客戶端請求過程、Filter模組實例、負載均衡策略以及Handler模組等。
附錄部分提供了Nginx的編譯模組、運行配置等有用信息。
作者介紹
高群凱,重慶大學計算機學院碩士畢業,接觸Linux等自由/開源軟體已有11年,在技術領域的興趣主要包括Linux、高性能服務(Web服務如Lighttpd、Nginx、Apache等;資料庫服務如Mongodb等),以及x86、MIPS(Cavium、RMI、Tilera)等。
一直在深信服科技有限公司工作,專職從事Linux相關研究,對系統底層性能最佳化、核心oops宕機以及x86疑難問題排查等相關技術有一些研究和積累。
曾著有《Lighttpd源碼分析》一書。
個人部落格:http://lenky.info/。
作品目錄
目 錄
第1章 源碼分析的準備工作 1
1.1 主要特性 1
1.2 源碼下載 4
1.3 源碼目錄結構 5
1.4 源碼分析工具 6
1.5 測試輔助工具 7
1.6 編譯與執行 8
1.7 其他準備 9
第2章 跟蹤與調試 10
2.1 利用gdb調試 10
2.1.1 綁定Nginx到gdb 10
2.1.2 gdb的watch指令 13
2.1.3 Nginx對gdb的支持 14
2.1.4 宏 16
2.1.5 cgdb 18
2.2 利用日誌信息跟蹤Nginx 19
2.3 利用strace/pstack調試Nginx 21
2.4 獲得Nginx程式完整執行流程 23
2.5 加樁調試 29
2.6 特殊套用邏輯的調試 31
第3章 進程模型 35
3.1 整體架構 35
3.2 核心進程模型 36
3.2.1 監控進程 36
3.2.2 工作進程 38
3.3 Cache進程模型 38
3.3.1 Cache管理進程 40
3.3.2 Cache載入進程 42
3.4 進程通信 43
3.5 共享記憶體 46
3.6 slab機制 50
3.7 信號處理 59
3.7.1 準備工作 60
3.7.2 設定生效 61
3.7.3 處理實例 62
第4章 數據結構 65
4.1 記憶體池 65
4.2 Hash 72
4.3 Radix tree 77
第5章 配置解析 81
5.1 配置檔案格式 81
5.2 配置項目解析準備 84
5.3 配置檔案解析流程 86
5.4 配置信息組織結構 95
5.5 配置信息的繼承 108
第6章 模組綜述 113
6.1 Handler模組 116
6.2 Filter模組 124
6.3 Upstream模組 127
6.4 Load-balance模組 132
第7章 事件管理機制 134
7.1 I/O多路復用模型 134
7.2 epoll模型 138
7.3 事件處理 144
7.4 負載均衡 146
7.4.1 客戶端請求均衡 146
7.4.2 多核綁定 152
7.5 逾時管理 153
第8章 變數機制 160
8.1 初識變數 160
8.2 支撐機制 163
8.3 腳本引擎 174
8.4 執行順序 180
第9章 請求處理與回響 182
9.1 創建監聽套接口 182
9.2 創建連線套接口 188
9.3 請求處理 191
9.4 數據回響 197
9.5 子請求 201
9.6 連線關閉 214
9.6.1 keepalive機制 217
9.6.2 延遲關閉機制 221
第10章 請求定位 228
10.1 Location的生成 228
10.2 Location的整理 232
10.3 Server的定位 239
10.4 Location的定位與使用 242
10.5 未命名location的使用 244
10.6 try_files指令 248
第11章 動態頁面請求處理 252
11.1 測試環境 252
11.2 客戶端發起Php請求 255
11.3 請求轉發 259
11.3.1 建立連線 261
11.3.2 傳送請求數據 265
11.4 數據回響 267
11.4.1 接收並處理Fastcgi回響頭 267
11.4.2 接收並傳送Fastcgi回響體 273
第12章 過濾模組 283
12.1 ngx_http_not_modified_filter_module 283
12.1.1 304狀態碼 283
12.1.2 412狀態碼 285
12.2 ngx_http_headers_filter_module 288
12.2.1 HTTP快取功能的擴展 289
12.2.2 增加自定義回響頭 290
12.3 ngx_http_gzip_filter_module 291
12.4 ngx_http_range_filter_module 293
第13章 負載均衡 299
13.1 負載均衡策略 300
13.2 加權輪詢 301
13.2.1 準備工作 301
13.2.2 選擇後端伺服器 304
13.2.3 後端伺服器權值計算 307
13.2.4 釋放後端伺服器 307
13.3 IP哈希 310
選擇後端伺服器 310
13.4 兩種策略對比 313
第14章 訪問控制 315
14.1 禁止指定IP訪問 315
14.2 密碼認證訪問 318
14.3 其他訪問控制措施 327
14.3.1 禁止用戶通過IP位址訪問伺服器 327
14.3.2 禁止對某目錄或某類檔案的訪問 327
附錄A 329
附錄B 332
附錄C 333
第1章 源碼分析的準備工作 1
1.1 主要特性 1
1.2 源碼下載 4
1.3 源碼目錄結構 5
1.4 源碼分析工具 6
1.5 測試輔助工具 7
1.6 編譯與執行 8
1.7 其他準備 9
第2章 跟蹤與調試 10
2.1 利用gdb調試 10
2.1.1 綁定Nginx到gdb 10
2.1.2 gdb的watch指令 13
2.1.3 Nginx對gdb的支持 14
2.1.4 宏 16
2.1.5 cgdb 18
2.2 利用日誌信息跟蹤Nginx 19
2.3 利用strace/pstack調試Nginx 21
2.4 獲得Nginx程式完整執行流程 23
2.5 加樁調試 29
2.6 特殊套用邏輯的調試 31
第3章 進程模型 35
3.1 整體架構 35
3.2 核心進程模型 36
3.2.1 監控進程 36
3.2.2 工作進程 38
3.3 Cache進程模型 38
3.3.1 Cache管理進程 40
3.3.2 Cache載入進程 42
3.4 進程通信 43
3.5 共享記憶體 46
3.6 slab機制 50
3.7 信號處理 59
3.7.1 準備工作 60
3.7.2 設定生效 61
3.7.3 處理實例 62
第4章 數據結構 65
4.1 記憶體池 65
4.2 Hash 72
4.3 Radix tree 77
第5章 配置解析 81
5.1 配置檔案格式 81
5.2 配置項目解析準備 84
5.3 配置檔案解析流程 86
5.4 配置信息組織結構 95
5.5 配置信息的繼承 108
第6章 模組綜述 113
6.1 Handler模組 116
6.2 Filter模組 124
6.3 Upstream模組 127
6.4 Load-balance模組 132
第7章 事件管理機制 134
7.1 I/O多路復用模型 134
7.2 epoll模型 138
7.3 事件處理 144
7.4 負載均衡 146
7.4.1 客戶端請求均衡 146
7.4.2 多核綁定 152
7.5 逾時管理 153
第8章 變數機制 160
8.1 初識變數 160
8.2 支撐機制 163
8.3 腳本引擎 174
8.4 執行順序 180
第9章 請求處理與回響 182
9.1 創建監聽套接口 182
9.2 創建連線套接口 188
9.3 請求處理 191
9.4 數據回響 197
9.5 子請求 201
9.6 連線關閉 214
9.6.1 keepalive機制 217
9.6.2 延遲關閉機制 221
第10章 請求定位 228
10.1 Location的生成 228
10.2 Location的整理 232
10.3 Server的定位 239
10.4 Location的定位與使用 242
10.5 未命名location的使用 244
10.6 try_files指令 248
第11章 動態頁面請求處理 252
11.1 測試環境 252
11.2 客戶端發起Php請求 255
11.3 請求轉發 259
11.3.1 建立連線 261
11.3.2 傳送請求數據 265
11.4 數據回響 267
11.4.1 接收並處理Fastcgi回響頭 267
11.4.2 接收並傳送Fastcgi回響體 273
第12章 過濾模組 283
12.1 ngx_http_not_modified_filter_module 283
12.1.1 304狀態碼 283
12.1.2 412狀態碼 285
12.2 ngx_http_headers_filter_module 288
12.2.1 HTTP快取功能的擴展 289
12.2.2 增加自定義回響頭 290
12.3 ngx_http_gzip_filter_module 291
12.4 ngx_http_range_filter_module 293
第13章 負載均衡 299
13.1 負載均衡策略 300
13.2 加權輪詢 301
13.2.1 準備工作 301
13.2.2 選擇後端伺服器 304
13.2.3 後端伺服器權值計算 307
13.2.4 釋放後端伺服器 307
13.3 IP哈希 310
選擇後端伺服器 310
13.4 兩種策略對比 313
第14章 訪問控制 315
14.1 禁止指定IP訪問 315
14.2 密碼認證訪問 318
14.3 其他訪問控制措施 327
14.3.1 禁止用戶通過IP位址訪問伺服器 327
14.3.2 禁止對某目錄或某類檔案的訪問 327
附錄A 329
附錄B 332
附錄C 333