發表於2024-11-05
Nginx 是由俄羅斯工程師Igor Sysoev 開發的一個高性能Web 服務器,運行效率遠超傳統的Apache、Tomcat,是世界第二大Web 服務器,被國內外諸多互聯網公司采用。
Nginx 的一個突齣特點是其靈活模塊化架構,可以在不修改核心的前提下增加任意功能,自2004 年發布至今,已經擁有百餘個官方及非官方的功能模塊(如fastcgi、memcached、mysql 等),使得Nginx 成長為瞭一個近乎“全能”的服務器軟件。
Nginx 以純C 語言實現,開發擴展功能模塊也大多使用C 語言,但由於C 語言固有的過程式特性,編寫、調試代碼都較麻煩——特彆是對於Nginx 的初學者。《Nginx 模塊開發指南:使用C++11 和Boost 程序庫》深入源碼,詳細解析瞭模塊體係、配置指令、HTTP 框架等Nginx 核心運行機製,並在此基礎上講解如何使用C++和Boost 程序庫來開發Nginx 模塊,充分利用現代C++裏的大量新特性和庫組件,讓Nginx 的模塊開發變得更加便捷、輕鬆和愉快。
《Nginx 模塊開發指南:使用C++11 和Boost 程序庫》結構嚴謹、脈絡清晰、詳略得當,值得廣大軟件開發工程師、係統運維工程師和編程愛好者擁有。
第0章 導讀 1
0.1 關於本書 1
0.2 讀者對象 2
0.3 讀者要求 3
0.4 運行環境 3
0.5 本書的結構 4
0.6 如何閱讀本書 6
0.7 本書的源碼 6
第1章 Nginx入門 7
1.1 關於Nginx 7
1.1.1 曆史 8
1.1.2 特點 8
1.1.3 進程模型 9
1.1.4 版本 10
1.2 安裝Nginx 11
1.2.1 準備工作 11
1.2.2 快速安裝 11
1.2.3 運行命令 12
1.2.4 驗證安裝 13
1.2.5 定製安裝 14
1.3 配置Nginx 15
1.3.1 配置文件格式 16
1.3.2 進程配置 17
1.3.3 運行日誌配置 18
1.3.4 http配置 18
1.3.5 server配置 19
1.3.6 location配置 20
1.3.7 文件訪問配置 21
1.3.8 upstream配置 22
1.3.9 變量 22
1.4 總結 24
第2章 Nginx開發準備 25
2.1 開發環境 25
2.1.1 C++標準 25
2.1.2 Boost程序庫 26
2.2 Nginx的目錄結構 26
2.3 Nginx源碼的特點 27
2.3.1 代碼風格 28
2.3.2 代碼優化 28
2.3.3 麵嚮對象思想 28
2.4 在Nginx裏使用C++ 29
2.4.1 實現原則 29
2.4.2 代碼風格 29
2.4.3 編譯腳本 30
2.5 基本的C++包裝類 32
2.5.1 類定義 32
2.5.2 構造和析構 33
2.5.3 成員函數 33
2.6 總結 34
第3章 Nginx基礎設施 35
3.1 頭文件 35
3.2 整數類型 36
3.2.1 標準整數類型 36
3.2.2 自定義整數類型 36
3.2.3 無效值 37
3.2.4 C++封裝 38
3.3 錯誤處理 41
3.3.1 錯誤碼定義 41
3.3.2 C++異常 41
3.4 內存池 44
3.4.1 結構定義 44
3.4.2 操作函數 45
3.4.3 C++封裝 45
3.4.4 清理機製 48
3.4.5 C++內存分配器 50
3.5 字符串 52
3.5.1 結構定義 52
3.5.2 操作函數 53
3.5.3 C++封裝 55
3.6 時間與日期 58
3.6.1 時間結構定義 58
3.6.2 時間操作函數 58
3.6.3 日期結構定義 59
3.6.4 日期操作函數 60
3.6.5 C++封裝時間 61
3.6.6 C++封裝日期 62
3.7 運行日誌 64
3.7.1 結構定義 65
3.7.2 操作函數 65
3.7.3 C++封裝 66
3.8 總結 68
第4章 Nginx高級數據結構 71
4.1 動態數組 71
4.1.1 結構定義 71
4.1.2 操作函數 73
4.1.3 C++封裝 73
4.2 單嚮鏈錶 76
4.2.1 結構定義 77
4.2.2 操作函數 78
4.2.3 C++迭代器 79
4.2.4 C++封裝鏈錶 81
4.3 雙端隊列 84
4.3.1 結構定義 84
4.3.2 操作函數 85
4.3.3 C++節點 87
4.3.4 C++迭代器 89
4.3.5 C++封裝隊列 90
4.4 緩衝區 95
4.4.1 結構定義 95
4.4.2 操作函數 97
4.4.3 C++封裝 98
4.5 數據塊鏈 100
4.5.1 結構定義 100
4.5.2 操作函數 101
4.5.3 C++節點 101
4.5.4 C++迭代器 103
4.5.5 C++封裝數據塊鏈 105
4.6 鍵值對 107
4.6.1 簡單鍵值對 107
4.6.2 散列錶鍵值對 107
4.7 總結 108
第5章 Nginx開發綜述 111
5.1 最簡單的Nginx模塊 111
5.1.1 模塊設計 112
5.1.2 配置解析 112
5.1.3 處理函數 114
5.1.4 模塊集成 116
5.1.5 編譯腳本和命令 117
5.1.6 測試驗證 118
5.2 Nginx開發基本流程 119
5.2.1 設計 119
5.2.2 開發 119
5.2.3 編譯 120
5.2.4 測試驗證 120
5.2.5 調優 121
5.3 Nginx的模塊 121
5.3.1 模塊的數據結構 121
5.3.2 模塊的種類 123
5.3.3 http模塊 124
5.3.4 模塊的類圖 124
5.3.5 模塊的組織形式 125
5.4 Nginx的配置 127
5.4.1 結構定義 128
5.4.2 配置解析的基本流程 131
5.4.3 配置數據的存儲模型 133
5.4.4 訪問配置數據 138
5.4.5 確定配置數據的位置 138
5.4.6 配置解析函數 140
5.4.7 配置數據的閤並 141
5.4.8 配置指令的類型 142
5.5 Nginx模塊源碼分析 143
5.5.1 ngx_core_module 143
5.5.2 ngx_errlog_module 146
5.6 Nginx的編譯腳本 147
5.6.1 運行機製 147
5.6.2 使用的變量 148
5.7 C++封裝模塊信息 149
5.7.1 NgxModuleConfig 149
5.7.2 NgxModule 153
5.8 C++封裝配置解析 155
5.8.1 NgxCommand 155
5.8.2 NgxTake 155
5.8.3 NGX_MODULE_NULL 157
5.9 C++開發Nginx模塊 158
5.9.1 C++模塊的基本組成 158
5.9.2 配置信息類 159
5.9.3 業務邏輯類 160
5.9.4 模塊集成類 162
5.9.5 實現源文件 164
5.9.6 增加更多功能 164
5.10 總結 165
第6章 Nginx HTTP框架綜述 169
6.1 HTTP框架簡介 169
6.1.1 模塊分類 169
6.1.2 處理流程 170
6.1.3 請求結構體 172
6.1.4 請求的處理階段 173
6.1.5 請求的環境數據 175
6.2 HTTP處理引擎 176
6.2.1 處理函數原型 176
6.2.2 處理函數的存儲方式 176
6.2.3 內容處理函數 177
6.2.4 引擎的數據結構 178
6.2.5 引擎的初始化 179
6.2.6 引擎的運行機製 181
6.2.7 日誌階段的處理 182
6.3 HTTP過濾引擎 183
6.3.1 過濾函數原型 183
6.3.2 過濾函數鏈錶 184
6.3.3 過濾函數的順序 185
6.3.4 過濾鏈錶的運行機製 187
6.3.5 請求體過濾 188
6.4 Nginx模塊源碼分析 188
6.4.1 ngx_http_static_module 188
6.4.2 ngx_http_not_modified_filter_ module 189
6.5 C++封裝 190
6.5.1 NgxModuleCtx 191
6.5.2 NgxHttpCoreModule 193
6.5.3 NgxFilter 195
6.6 總結 197
第7章 Nginx HTTP請求處理 199
7.1 HTTP狀態碼 199
7.2 請求結構體 200
7.3 請求行 201
7.3.1 請求方法 201
7.3.2 協議版本號 202
7.3.3 資源標識符 202
7.4 請求頭 203
7.5 請求體 204
7.5.1 結構定義 205
7.5.2 操作函數 205
7.6 響應頭 206
7.6.1 結構定義 206
7.6.2 操作函數 207
7.7 響應體 207
7.8 C++封裝 208
7.8.1 NgxHeaders 208
7.8.2 NgxRequestBody 211
7.8.3 NgxRequest 212
7.8.4 NgxResponse 213
7.9 開發HTTP處理模塊 216
7.9.1 模塊設計 216
7.9.2 配置信息類 217
7.9.3 業務邏輯類 217
7.9.4 模塊集成類 219
7.9.5 實現源文件 221
7.9.6 編譯腳本 221
7.9.7 測試驗證 221
7.10 開發HTTP過濾模塊 222
7.10.1 模塊設計 222
7.10.2 配置信息類 222
7.10.3 環境數據類 223
7.10.4 業務邏輯類 223
7.10.5 模塊集成類 227
7.10.6 實現源文件 228
7.10.7 編譯腳本 228
7.10.8 測試驗證 228
7.11 總結 229
第8章 Nginx HTTP請求轉發 231
8.1 upstream框架簡介 231
8.1.1 工作原理 232
8.1.2 請求結構體 233
8.1.3 上遊結構體 234
8.1.4 上遊配置參數 236
8.2 upstream運行機製 237
8.2.1 迴調函數 237
8.2.2 初始化upstream 239
8.2.3 設置upstream 239
8.2.4 啓動upstream 241
8.2.5 處理upstream數據 241
8.3 load-balance運行機製 242
8.3.1 結構定義 243
8.3.2 初始化模塊入口 247
8.3.3 初始化IP地址列錶 248
8.3.4 初始化算法 250
8.3.5 執行算法 251
8.4 Nginx模塊源碼分析 251
8.4.1 ngx_http_memcached_module 251
8.4.2 ngx_http_upstream_ip_hash_ module 254
8.5 C++封裝 257
8.5.1 NgxUpstream 257
8.5.2 NgxUpstreamHelper 259
8.5.3 NgxHttpUpstreamModule 261
8.5.4 NgxLoadBalance 263
8.6 開發upstream模塊 264
8.6.1 模塊設計 264
8.6.2 配置信息類 264
8.6.3 業務邏輯類 265
8.6.4 模塊集成類 268
8.6.5 實現源文件 269
8.6.6 編譯腳本 269
8.6.7 測試驗證 269
8.7 開發load-balance模塊 270
8.7.1 模塊設計 271
8.7.2 配置信息類 271
8.7.3 業務邏輯類 271
8.7.4 模塊集成類 273
8.7.5 實現源文件 275
8.7.6 編譯腳本 275
8.7.7 測試驗證 275
8.8 總結 276
第9章 Nginx HTTP子請求 277
9.1 子請求簡介 277
9.1.1 工作原理 278
9.1.2 請求結構體 279
9.1.3 迴調函數 280
9.1.4 待處理請求鏈錶 282
9.1.5 子請求存儲結構 282
9.2 子請求運行機製 283
9.2.1 創建子請求 283
9.2.2 處理引擎 287
9.2.3 數據整理 288
9.3 C++封裝 290
9.3.1 NgxSubRequestHandler 290
9.3.2 NgxSubRequest 292
9.4 數據迴傳模塊 293
9.4.1 模塊設計 293
9.4.2 環境數據類 293
9.4.3 業務邏輯類 295
9.4.4 模塊集成類 297
9.4.5 編譯腳本 298
9.5 在模塊裏使用子請求 299
9.5.1 模塊設計 299
9.5.2 配置信息類 299
9.5.3 業務邏輯類 300
9.5.4 測試驗證 303
9.6 總結 304
第10章 Nginx變量 305
10.1 結構定義 305
10.1.1 變量值 305
10.1.2 變量訪問對象 306
10.1.3 變量的存儲 307
10.1.4 請求結構體 307
10.2 運行機製 308
10.2.1 注冊變量 308
10.2.2 獲取變量 309
10.3 C++封裝 310
10.3.1 NgxVariableValue 310
10.3.2 NgxVariable 311
10.3.3 NgxVariables 312
10.3.4 NgxVarManager 313
10.3.5 NgxVariableValueProxy 314
10.4 在模塊裏使用變量 315
10.4.1 添加變量 316
10.4.2 讀寫變量 317
10.5 總結 317
第11章 Nginx輔助設施 319
11.1 摘要算法 319
11.1.1 MD5 319
11.1.2 SHA-1 320
11.1.3 MurmurHash 321
11.1.4 C++封裝 321
11.2 編碼和解碼 324
11.2.1 CRC校驗 324
11.2.2 Base64編碼解碼 325
11.2.3 URI編碼解碼 326
11.2.4 HTML和JSON編碼 327
11.3 正則錶達式 327
11.4 共享內存 328
11.4.1 結構定義 328
11.4.2 操作函數 329
11.4.3 C++共享內存 329
11.5 定時器 331
11.5.1 結構定義 331
11.5.2 操作函數 332
11.5.3 C++定時器事件 332
11.5.4 C++定時器工廠 333
11.6 總結 335
第12章 Nginx與設計模式 337
12.1 設計模式簡介 337
12.2 框架級彆的模式 337
12.3 業務級彆的模式 339
12.4 代碼級彆的模式 340
12.5 總結 342
第13章 結束語 343
13.1 本書的遺憾 343
13.2 下一步 344
13.3 臨彆贈言 345
附錄A 推薦書目 347
附錄B GDB調試簡介 349
附錄C Nginx的字符串格式化 351
附錄D Nginx裏的void*變量 353
附錄E Nginx C++模塊簡介 355
附錄F Nginx Lua模塊簡介 357
Nginx模塊開發指南:使用C++11和Boost程序庫 下載 mobi pdf epub txt 電子書 格式 2024
Nginx模塊開發指南:使用C++11和Boost程序庫 下載 mobi epub pdf 電子書不錯
評分買得太多書瞭 看瞭下目錄感覺還不錯 等待閱讀中
評分比較熱點的技術,Nginx和C++ 11,它山之石,可以攻玉,嚮老羅藉鑒下經驗。
評分我是來學習小標題的,對於開發什麼倒是不在意。
評分應該很不錯,趁有優惠買來慢慢看。
評分希望看完能入門就行?
評分做Nginx開發看一下,不然要不要使用c++就另外說瞭。
評分買瞭好多本啊
評分學習c++
Nginx模塊開發指南:使用C++11和Boost程序庫 mobi epub pdf txt 電子書 格式下載 2024