注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)工業(yè)技術(shù)建筑科學(xué)建筑設(shè)計(jì)Nginx完全開發(fā)指南:使用C、C++、JavaScript和Lua

Nginx完全開發(fā)指南:使用C、C++、JavaScript和Lua

Nginx完全開發(fā)指南:使用C、C++、JavaScript和Lua

定 價(jià):¥109.00

作 者: 羅劍鋒
出版社: 電子工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787121364365 出版時間: 2019-06-01 包裝: 平裝
開本: 16開 頁數(shù): 608 字?jǐn)?shù):  

內(nèi)容簡介

  Nginx是著名的Web服務(wù)器,性能優(yōu)異,運(yùn)行效率遠(yuǎn)超傳統(tǒng)的Apache、Tomcat,廣泛應(yīng)用于國內(nèi)外諸多**互聯(lián)網(wǎng)公司。Nginx的一個突出特點(diǎn)是其靈活優(yōu)秀的模塊化架構(gòu),可以在不修改核心的前提下增加任意功能,自2004年發(fā)布至今,已經(jīng)擁有百余個官方及非官方的功能模塊(如proxy、mysql、redis、rtmp、lua等),使得Nginx成長為了一個近乎“全能”的服務(wù)器軟件。Nginx功能強(qiáng)大,架構(gòu)復(fù)雜,學(xué)習(xí)、維護(hù)和開發(fā)的門檻較高。為了幫助讀者跨越這一障礙,本書深入*新的Nginx源碼(Stable 1.16.0),詳細(xì)剖析了模塊體系、動態(tài)插件、功能框架、內(nèi)存分配、進(jìn)程模型、事件驅(qū)動、線程池、TCP/UDP/HTTP處理等Nginx核心運(yùn)行機(jī)制,在此基礎(chǔ)上講解如何使用C、C++、JavaScript、Lua等語言來增強(qiáng)擴(kuò)展Nginx,讓任何人都能夠便捷、輕松地開發(fā)和定制Nginx,進(jìn)而應(yīng)用到自己的實(shí)際工作中,創(chuàng)造出更多的價(jià)值。本書結(jié)構(gòu)嚴(yán)謹(jǐn)、脈絡(luò)清晰、論述精確、詳略得當(dāng)、圖文并茂,值得廣大軟件開發(fā)工程師、系統(tǒng)運(yùn)維工程師和編程愛好者擁有。

作者簡介

  羅劍鋒1996年就讀于東北財(cái)經(jīng)大學(xué);1997年開始接觸C/C++;1998年參加計(jì)算機(jī)軟件專業(yè)技術(shù)資格和水平考試,獲高級程序員資質(zhì);2003年畢業(yè)于北京理工大學(xué),獲計(jì)算機(jī)專業(yè)碩士學(xué)位。主要研究方向?yàn)镃/C++、設(shè)計(jì)模式、高性能網(wǎng)絡(luò)服務(wù)器開發(fā),業(yè)余愛好是閱讀、欣賞音樂和旅游。

圖書目錄

目錄
第0章 導(dǎo)讀 1
0.1 于本書 1
0.2 讀者對象 3
0.3 讀者要求 4
0.4 運(yùn)行環(huán)境 5
0.5 本書的結(jié)構(gòu) 5
0.6 如何閱讀本書 6
0.7 本書的源碼 7
第1章 Nginx入門 8
1.1 關(guān)于Nginx 8
1.1.1 歷史 9
1.1.2 特點(diǎn) 9
1.1.3 進(jìn)程模型 10
1.1.4 版本 12
1.2 安裝Nginx 12
1.2.1 準(zhǔn)備工作 13
1.2.2 快速安裝 13
1.2.3 運(yùn)行命令 14
1.2.4 驗(yàn)證安裝 15
1.2.5 定制安裝 16
1.3 配置Nginx 18
1.3.1 語法格式 19
1.3.2 進(jìn)程管理 20
1.3.3 動態(tài)模塊 22
1.3.4 運(yùn)行日志 22
1.3.5 事件機(jī)制 22
1.4 HTTP服務(wù) 23
1.4.1 基本配置 24
1.4.3 location配置 25
1.4.4 file配置 26
1.5 TCP/UDP服務(wù) 27
1.6 反向代理 28
1.6.1 上游集群 28
1.6.2 負(fù)載均衡 29
1.6.3 代理轉(zhuǎn)發(fā) 30
1.7 變量 30
1.8 總結(jié) 32
第2章 Nginx開發(fā)準(zhǔn)備 33
2.1 源碼結(jié)構(gòu) 33
2.2 源碼特點(diǎn) 34
2.2.1 代碼風(fēng)格 34
2.2.2 代碼優(yōu)化 35
2.2.3 面向?qū)ο笏枷?35
2.3 頭文件 36
2.4 總結(jié) 36
第3章 Nginx基礎(chǔ)設(shè)施 37
3.1 常數(shù) 37
3.1.1 環(huán)境信息 37
3.1.2 版本信息 38
3.1.3 錯誤碼 38
3.2 整數(shù)類型 39
3.2.1 標(biāo)準(zhǔn)整數(shù)類型 39
3.2.2 自用整數(shù)類型 40
3.2.3 無效值 40
3.3 內(nèi)存池 42
3.3.1 結(jié)構(gòu)定義 42
3.3.2 操作函數(shù) 43
3.3.3 用法示例 44
3.4 字符串 44
3.4.1 結(jié)構(gòu)定義 44
3.4.2 操作函數(shù) 45
3.4.3 用法示例 48
3.5 時間 49
3.5.1 結(jié)構(gòu)定義 49
3.5.2 操作函數(shù) 49
3.5.3 用法示例 50
3.6 日期 50
3.6.1 結(jié)構(gòu)定義 50
3.6.2 操作函數(shù) 51
3.6.3 用法示例 52
3.7 運(yùn)行日志 52
3.7.1 結(jié)構(gòu)定義 52
3.7.2 操作函數(shù) 53
3.7.3 用法示例 54
3.8 摘要算法 54
3.8.1 Times33 55
3.8.2 CRC 55
3.8.3 MurmurHash 56
3.8.4 MD5 57
3.8.5 SHA-1 57
3.9 數(shù)據(jù)編碼 58
3.9.1 Base64 58
3.9.2 HTML/JSON 59
3.10 總結(jié) 60
第4章 Nginx高級數(shù)據(jù)結(jié)構(gòu) 61
4.1 動態(tài)數(shù)組 61
4.1.1 結(jié)構(gòu)定義 62
4.1.2 操作函數(shù) 63
4.1.3 用法示例 64
4.2 單向鏈表 65
4.2.1 結(jié)構(gòu)定義 65
4.2.2 操作函數(shù) 66
4.2.3 用法示例 66
4.3 雙端隊(duì)列 68
4.3.1 結(jié)構(gòu)定義 68
4.3.2 操作函數(shù) 69
4.3.3 用法示例 71
4.4 紅黑樹 72
4.4.1 結(jié)構(gòu)定義 73
4.4.2 操作函數(shù) 75
4.4.3 用法示例 76
4.5 緩沖區(qū) 78
4.5.1 結(jié)構(gòu)定義 78
4.5.2 操作函數(shù) 80
4.5.3 用法示例 81
4.6 數(shù)據(jù)塊鏈 82
4.6.1 結(jié)構(gòu)定義 82
4.6.2 操作函數(shù) 83
4.6.3 用法示例 83
4.7 總結(jié) 84
第5章 Nginx開發(fā)概述 85
5.1 開發(fā)示例 85
5.1.1 模塊設(shè)計(jì) 85
5.1.2 配置解析 86
5.1.3 處理函數(shù) 88
5.1.4 模塊集成 90
5.1.5 編譯腳本 91
5.1.6 測試驗(yàn)證 92
5.2 開發(fā)流程 92
5.2.1 設(shè)計(jì) 93
5.2.2 開發(fā) 93
5.2.3 編譯 94
5.2.4 測試驗(yàn)證 94
5.2.5 調(diào)優(yōu) 94
5.2.6 流程圖 95
5.3 編譯腳本 95
5.3.1 運(yùn)行機(jī)制 96
5.3.2 腳本變量 96
5.3.3 添加模塊 97
5.3.4 腳本格式 97
5.3.5 舊式腳本 98
5.4 總結(jié) 99
第6章 Nginx模塊體系 100
6.1 模塊架構(gòu) 100
6.1.1 結(jié)構(gòu)定義 100
6.1.2 模塊的簽名 102
6.1.3 模塊的種類 103
6.1.4 模塊的函數(shù)指針表 104
6.1.5 模塊的類圖 105
6.1.6 模塊的組織形式 106
6.1.7 模塊的靜態(tài)加載 108
6.1.8 模塊的動態(tài)加載 110
6.2 配置解析 113
6.2.1 結(jié)構(gòu)定義 113
6.2.2 基本流程 116
6.2.3 存儲模型 118
6.2.4 訪問配置數(shù)據(jù) 122
6.2.5 配置數(shù)據(jù)的位置 123
6.2.6 配置數(shù)據(jù)的解析 124
6.2.7 配置數(shù)據(jù)的合并 126
6.2.8 配置指令的類型 127
6.3 源碼分析 128
6.3.1 ngx_core_module 128
6.3.2 ngx_errlog_module 130
6.4 總結(jié) 132
第7章 Nginx功能框架 134
7.1 框架簡介 134
7.1.1 模塊分類 134
7.1.2 處理流程 135
7.1.3 請求的處理階段 137
7.1.4 請求結(jié)構(gòu)體 138
7.1.5 請求的環(huán)境數(shù)據(jù) 140
7.2 處理引擎 141
7.2.1 函數(shù)原型 141
7.2.2 處理函數(shù)的存儲方式 141
7.2.3 內(nèi)容處理函數(shù) 142
7.2.4 引擎的數(shù)據(jù)結(jié)構(gòu) 143
7.2.5 引擎的初始化 144
7.2.6 引擎的運(yùn)行機(jī)制 145
7.2.7 日志階段的處理 148
7.3 過濾引擎 148
7.3.1 函數(shù)原型 148
7.3.2 過濾函數(shù)鏈表 149
7.3.3 過濾函數(shù)的順序 150
7.3.4 過濾鏈表的運(yùn)行機(jī)制 152
7.3.5 請求體過濾 153
7.4 源碼分析 153
7.4.1 ngx_http_static_module 154
7.4.2 ngx_http_not_modified_filter_module 155
7.5 總結(jié) 156
第8章 Nginx請求處理 158
8.1 狀態(tài)碼 158
8.2 請求結(jié)構(gòu)體 159
8.3 請求行 160
8.3.1 請求方法 160
8.3.2 協(xié)議版本號 161
8.3.3 資源標(biāo)識符 161
8.4 請求頭 162
8.5 請求體 163
8.5.1 結(jié)構(gòu)定義 163
8.5.2 操作函數(shù) 164
8.6 響應(yīng)頭 164
8.6.1 結(jié)構(gòu)定義 164
8.6.2 操作函數(shù) 165
8.7 響應(yīng)體 166
8.8 源碼分析 166
8.8.1 ngx_http_static_module 166
8.8.2 ngx_http_not_modified_filter_module 168
8.9 開發(fā)示例:content handler 169
8.9.1 模塊設(shè)計(jì) 169
8.9.2 配置數(shù)據(jù) 169
8.9.3 處理函數(shù) 170
8.9.4 注冊函數(shù) 171
8.9.5 模塊集成 172
8.9.6 編譯腳本 173
8.9.7 測試驗(yàn)證 173
8.10 開發(fā)示例:filter 173
8.10.1 模塊設(shè)計(jì) 173
8.10.2 配置數(shù)據(jù) 174
8.10.3 環(huán)境數(shù)據(jù) 174
8.10.4 注冊過濾函數(shù) 175
8.10.5 過濾響應(yīng)頭 175
8.10.6 過濾響應(yīng)體 176
8.10.7 模塊集成 178
8.10.8 編譯腳本 179
8.10.9 測試驗(yàn)證 179
8.11 總結(jié) 180
第9章 Nginx請求轉(zhuǎn)發(fā) 181
9.1 框架簡介 181
9.1.1 工作原理 182
9.1.2 請求結(jié)構(gòu)體 183
9.1.3 上游結(jié)構(gòu)體 184
9.1.4 上游配置參數(shù) 185
9.2 請求轉(zhuǎn)發(fā) 186
9.2.1 回調(diào)函數(shù) 186
9.2.2 初始化 188
9.2.3 設(shè)置參數(shù) 189
9.2.4 啟動連接 190
9.2.5 處理響應(yīng)頭 190
9.2.6 處理響應(yīng)體 191
9.3 負(fù)載均衡 192
9.3.1 結(jié)構(gòu)定義 192
9.3.2 初始化模塊入口 196
9.3.3 初始化地址列表 197
9.3.4 初始化算法 199
9.3.5 執(zhí)行算法 200
9.4 源碼分析 200
9.4.1 ngx_http_memcached_module 201
9.4.2 ngx_http_upstream_ip_hash_module 203
9.5 開發(fā)示例:upstream 206
9.5.1 模塊設(shè)計(jì) 206
9.5.2 配置數(shù)據(jù) 206
9.5.3 上行數(shù)據(jù) 208
9.5.4 下行數(shù)據(jù) 208
9.5.5 啟動轉(zhuǎn)發(fā) 209
9.5.6 注冊函數(shù) 210
9.5.7 模塊集成 210
9.5.8 編譯腳本 211
9.5.9 測試驗(yàn)證 212
9.6 開發(fā)示例:balance 212
9.6.1 模塊設(shè)計(jì) 212
9.6.2 配置數(shù)據(jù) 212
9.6.3 算法數(shù)據(jù)結(jié)構(gòu) 213
9.6.4 模塊入口 213
9.6.5 算法實(shí)現(xiàn) 214
9.6.6 模塊集成 215
9.6.7 編譯腳本 216
9.6.8 測試驗(yàn)證 216
9.7 總結(jié) 216
第10章 Nginx子請求 218
10.1 框架簡介 218
10.1.1 工作原理 219
10.1.2 請求結(jié)構(gòu)體 220
10.1.3 回調(diào)函數(shù) 221
10.1.4 待處理請求鏈表 223
10.1.5 子請求存儲結(jié)構(gòu) 223
10.2 運(yùn)行機(jī)制 223
10.2.1 創(chuàng)建子請求 224
10.2.2 處理引擎 228
10.2.3 數(shù)據(jù)整理 229
10.3 開發(fā)示例 230
10.3.1 模塊設(shè)計(jì) 231
10.3.2 配置數(shù)據(jù) 231
10.3.3 環(huán)境數(shù)據(jù) 231
10.3.4 回調(diào)函數(shù) 231
10.3.5 處理函數(shù) 232
10.3.6 注冊函數(shù) 233
10.3.7 測試驗(yàn)證 234
10.4 總結(jié) 234
第11章 Nginx變量 236
11.1 結(jié)構(gòu)定義 236
11.1.1 變量 237
11.1.2 復(fù)雜變量 238
11.1.3 變量的存儲 239
11.1.4 請求結(jié)構(gòu)體 239
11.2 操作變量 240
11.2.1 添加變量 240
11.2.2 獲取變量 241
11.2.3 修改變量 242
11.2.4 編譯復(fù)雜變量 242
11.2.5 獲取復(fù)雜變量 242
11.3 開發(fā)示例:變量 243
11.3.1 模塊設(shè)計(jì) 243
11.3.2 定義變量 243
11.3.3 添加變量 244
11.3.4 獲取變量 244
11.3.5 測試驗(yàn)證 245
11.4 開發(fā)示例:復(fù)雜變量 246
11.4.1 模塊設(shè)計(jì) 246
11.4.2 定義復(fù)雜變量 246
11.4.3 編譯復(fù)雜變量 246
11.4.4 獲取復(fù)雜變量 247
11.4.5 測試驗(yàn)證 247
11.5 總結(jié) 247
第12章 Nginx內(nèi)存管理機(jī)制 249
12.1 基本系統(tǒng)調(diào)用 250
12.1.1 malloc 250
12.1.2 posix_memalign 251
12.1.3 free 251
12.2 塊式內(nèi)存池 252
12.2.1 結(jié)構(gòu)定義 252
12.2.2 常量定義 255
12.2.3 創(chuàng)建內(nèi)存池 255
12.2.4 分配內(nèi)存 257
12.2.5 分配大塊內(nèi)存 258
12.2.6 分配小塊內(nèi)存 259
12.2.7 釋放內(nèi)存 264
12.2.8 清理機(jī)制 264
12.2.9 清空內(nèi)存池 265
12.2.10 銷毀內(nèi)存池 266
12.3 頁式內(nèi)存池 267
12.3.1 結(jié)構(gòu)定義 268
12.3.2 常量定義 270
12.3.3 初始化內(nèi)存池 271
12.3.4 分配內(nèi)存 273
12.3.5 分配大塊內(nèi)存 275
12.3.6 分配小塊內(nèi)存 277
12.3.7 釋放內(nèi)存 280
12.4 總結(jié) 282
第13章 Nginx進(jìn)程機(jī)制 284
13.1 基本系統(tǒng)調(diào)用 284
13.1.1 errno 284
13.1.2 getrlimit 285
13.2 進(jìn)程系統(tǒng)調(diào)用 285
13.2.1 getpid 285
13.2.2 fork 286
13.2.3 waitpid 286
13.3 信號系統(tǒng)調(diào)用 287
13.3.1 kill 287
13.3.2 sigaction 288
13.3.3 sigsuspend 288
13.4 結(jié)構(gòu)定義 288
13.4.1 ngx_cycle_t 288
13.4.2 ngx_core_conf_t 289
13.4.3 ngx_process_t 290
13.5 全局變量 291
13.5.1 命令行相關(guān) 291
13.5.2 操作系統(tǒng)相關(guān) 292
13.5.3 進(jìn)程功能相關(guān) 292
13.5.4 信號功能相關(guān) 293
13.6 啟動過程 293
13.6.1 基本流程 293
13.6.2 解析命令行 294
13.6.3 版本和幫助信息 294
13.6.4 初始化cycle 294
13.6.5 測試配置 296
13.6.6 發(fā)送信號 297
13.6.7 守護(hù)進(jìn)程化 297
13.6.8 啟動工作進(jìn)程 298
13.6.9 流程圖 298
13.7 信號處理 299
13.7.1 信號處理函數(shù) 300
13.7.2 發(fā)送信號 300
13.7.3 處理信號 301
13.8 單進(jìn)程模式 302
13.8.1 single進(jìn)程 302
13.8.2 single進(jìn)程流程圖 304
13.9 多進(jìn)程模式 304
13.9.1 產(chǎn)生子進(jìn)程 304
13.9.2 master進(jìn)程 306
13.9.3 master進(jìn)程流程圖 309
13.9.4 worker進(jìn)程 310
13.9.5 worker進(jìn)程流程圖 312
13.10 總結(jié) 313
第14章 Nginx進(jìn)程間通信機(jī)制 315
14.1 基本系統(tǒng)調(diào)用 315
14.1.1 atomic 315
14.1.2 sched_yield 316
14.1.3 semaphore 316
14.1.4 mmap 317
14.2 共享內(nèi)存(Ⅰ) 317
14.2.1 結(jié)構(gòu)定義 317
14.2.2 創(chuàng)建共享內(nèi)存 317
14.2.3 使用共享內(nèi)存 318
14.3 自旋鎖 318
14.3.1 自旋鎖定 319
14.3.2 解除鎖定 320
14.3.3 使用自旋鎖 320
14.4 互斥鎖 320
14.4.1 結(jié)構(gòu)定義 320
14.4.2 創(chuàng)建互斥鎖 321
14.4.3 互斥鎖定 322
14.4.4 解除鎖定 323
14.4.5 銷毀互斥鎖 324
14.4.6 使用互斥鎖 324
14.5 讀寫鎖 325
14.5.1 寫鎖定 325
14.5.2 讀鎖定 325
14.5.3 解除鎖定 326
14.5.4 降級鎖定 326
14.5.5 使用讀寫鎖 327
14.6 共享內(nèi)存(Ⅱ) 327
14.6.1 結(jié)構(gòu)定義 327
14.6.2 添加共享內(nèi)存 328
14.6.3 創(chuàng)建共享內(nèi)存 329
14.6.4 使用共享內(nèi)存 330
14.7 總結(jié) 331
第15章 Nginx事件機(jī)制 333
15.1 基本系統(tǒng)調(diào)用 333
15.1.1 errno 334
15.1.2 ioctl 334
15.1.3 setitimer 334
15.1.4 gettimeofday 334
15.2 socket系統(tǒng)調(diào)用 335
15.2.1 socket 335
15.2.2 bind 335
15.2.3 listen 336
15.2.4 accept 336
15.2.5 connect 336
15.2.6 recv 336
15.2.7 send 337
15.2.8 setsockopt 337
15.2.9 close 337
15.2.10 函數(shù)關(guān)系圖 338
15.3 epoll系統(tǒng)調(diào)用 338
15.3.1 epoll_create 339
15.3.2 epoll_ctl 339
15.3.3 epoll_wait 340
15.3.4 LT和ET 341
15.3.5 函數(shù)關(guān)系圖 342
15.4 結(jié)構(gòu)定義 342
15.4.1 ngx_event_t 342
15.4.2 ngx_connection_t 343
15.4.3 ngx_listening_t 345
15.4.4 ngx_cycle_t 346
15.4.5 ngx_os_io_t 347
15.4.6 ngx_event_actions_t 351
15.4.7 ngx_posted_events 353
15.4.8 關(guān)系圖 354
15.5 定時器 354
15.5.1 紅黑樹 354
15.5.2 操作函數(shù) 355
15.5.3 超時處理 355
15.6 模塊體系 358
15.6.1 函數(shù)指針表 358
15.6.2 模塊的組織形式 359
15.6.3 核心配置 361
15.6.4 epoll模塊 362
15.7 全局變量 363
15.7.1 更新時間相關(guān) 363
15.7.2 事件機(jī)制相關(guān) 364
15.7.3 負(fù)載均衡相關(guān) 365
15.7.4 統(tǒng)計(jì)相關(guān) 365
15.8 進(jìn)程初始化 366
15.8.1 初始化函數(shù) 366
15.8.2 基本參數(shù)初始化 368
15.8.3 事件機(jī)制初始化 369
15.8.4 連接池初始化 370
15.8.5 監(jiān)聽端口初始化 371
15.8.6 初始化流程圖 373
15.9 運(yùn)行機(jī)制 373
15.9.1 添加事件 374
15.9.2 刪除事件 377
15.9.3 處理事件 378
15.9.4 接受連接 382
15.9.5 負(fù)載均衡 384
15.10 避免阻塞 389
15.11 總結(jié) 390
第16章 Nginx多線程機(jī)制 392
16.1 eventfd系統(tǒng)調(diào)用 392
16.2 pthread系統(tǒng)調(diào)用 393
16.3 結(jié)構(gòu)定義 393
16.3.1 ngx_thread_task_t 394
16.3.2 ngx_thread_pool_queue_t 394
16.3.3 ngx_thread_pool_t 395
16.3.4 結(jié)構(gòu)關(guān)系圖 396
16.4 事件通知 396
16.4.1 函數(shù)接口 396
16.4.2 初始化 397
16.4.3 發(fā)送通知 398
16.4.4 處理通知 398
16.5 運(yùn)行機(jī)制 399
16.5.1 完成任務(wù)隊(duì)列 399
16.5.2 創(chuàng)建線程池 399
16.5.3 創(chuàng)建任務(wù) 400
16.5.4 投遞任務(wù) 401
16.5.5 執(zhí)行任務(wù) 402
16.5.6 任務(wù)完成回調(diào) 404
16.5.7 銷毀線程池 405
16.6 開發(fā)示例 406
16.6.1 模塊設(shè)計(jì) 406
16.6.2 配置數(shù)據(jù) 407
16.6.3 線程任務(wù) 407
16.6.4 任務(wù)完成回調(diào) 408
16.6.5 投遞任務(wù) 409
16.6.6 測試驗(yàn)證 410
16.7 總結(jié) 410
第17章 Nginx Stream機(jī)制 412
17.1 模塊體系 412
17.1.1 函數(shù)指針表 413
17.1.2 基礎(chǔ)模塊 413
17.1.3 核心模塊 415
17.1.4 結(jié)構(gòu)關(guān)系圖 416
17.1.5 存儲模型 416
17.2 監(jiān)聽端口 418
17.2.1 結(jié)構(gòu)定義 418
17.2.2 解析配置 420
17.2.3 啟動監(jiān)聽 424
17.3 處理引擎 425
17.3.1 階段定義 426
17.3.2 函數(shù)原型 426
17.3.3 處理函數(shù)的存儲方式 426
17.3.4 引擎數(shù)據(jù)結(jié)構(gòu) 427
17.3.5 結(jié)構(gòu)關(guān)系圖 428
17.3.6 引擎的初始化 428
17.4 過濾引擎 430
17.4.1 函數(shù)原型 430
17.4.2 過濾函數(shù)鏈表 430
17.5 運(yùn)行機(jī)制 431
17.5.1 會話結(jié)構(gòu)體 431
17.5.2 創(chuàng)建會話 432
17.5.3 執(zhí)行引擎 435
17.5.4 通用階段處理 437
17.5.5 預(yù)讀數(shù)據(jù) 438
17.5.6 產(chǎn)生響應(yīng)數(shù)據(jù) 442
17.5.7 過濾數(shù)據(jù) 442
17.5.8 結(jié)束會話 442
17.6 開發(fā)示例 443
17.6.1 discard協(xié)議 444
17.6.2 time協(xié)議 446
17.6.3 echo協(xié)議 448
17.7 總結(jié) 450
第18章 Nginx HTTP機(jī)制 452
18.1 結(jié)構(gòu)定義 452
18.1.1 ngx_http_state_e 452
18.1.2 ngx_http_connection_t 453
18.1.3 ngx_http_request_t 453
18.2 初始化連接 454
18.2.1 建立連接 455
18.2.2 等待數(shù)據(jù) 456
18.2.3 讀取請求頭 458
18.3 執(zhí)行引擎 463
18.3.1 初始化引擎 463
18.3.2 通用階段 465
18.3.3 改寫階段 466
18.3.4 訪問控制階段 467
18.3.5 內(nèi)容產(chǎn)生階段 469
18.4 處理請求體 470
18.4.1 丟棄緩沖區(qū)數(shù)據(jù) 470
18.4.2 讀取并丟棄數(shù)據(jù) 471
18.4.3 讀事件處理函數(shù) 473
18.4.4 啟動丟棄處理 474
18.5 發(fā)送數(shù)據(jù) 475
18.5.1 發(fā)送初始化 475
18.5.2 事件處理函數(shù) 476

18.6 結(jié)束請求 478
18.6.1 釋放請求資源 478
18.6.2 檢查引用計(jì)數(shù)結(jié)束請求 479
18.6.3 檢查狀態(tài)結(jié)束請求 480
18.6.4 綜合處理結(jié)束請求 481
18.7 總結(jié) 483
第19章 Nginx與設(shè)計(jì)模式 485
19.1 設(shè)計(jì)模式簡介 485
19.2 框架級別的模式 485
19.3 業(yè)務(wù)級別的模式 487
19.4 代碼級別的模式 488
19.5 總結(jié) 490
第20章 Nginx C++開發(fā) 491
20.1 語言簡介 491
20.2 開發(fā)準(zhǔn)備 492
20.2.1 程序庫 492
20.2.2 頭文件 492
20.2.3 編程范式 493
20.2.4 實(shí)現(xiàn)原則 493
20.2.5 源碼組織 494
20.2.6 編譯腳本 495
20.3 封裝類 497
20.3.1 基礎(chǔ)設(shè)施 497
20.3.2 高級數(shù)據(jù)結(jié)構(gòu) 500
20.3.3 功能框架 505
20.3.4 請求處理 509
20.4 開發(fā)示例:content handler 510
20.4.1 配置信息類 510
20.4.2 業(yè)務(wù)邏輯類 511
20.4.3 模塊集成類 512
20.4.4 實(shí)現(xiàn)源文件 515
20.5 開發(fā)示例:filter 515
20.5.1 配置信息類 515
20.5.2 環(huán)境數(shù)據(jù)類 515
20.5.3 業(yè)務(wù)邏輯類 516
20.5.4 模塊集成類 518
20.5.5 實(shí)現(xiàn)源文件 519
20.6 總結(jié) 519
第21章 Nginx JavaScript開發(fā) 521
21.1 語言簡介 521
21.2 模塊簡介 522
21.3 開發(fā)準(zhǔn)備 523
21.4 指令簡介 523
21.5 功能接口 524
21.5.1 運(yùn)行日志 524
21.5.2 變量 525
21.5.3 請求處理 525
21.5.4 子請求 527
21.5.5 定時器 527
21.5.6 流處理 527
21.6 開發(fā)示例 528
21.6.1 content handler 528
21.6.2 subrequest 529
21.6.3 A/B testing 530
21.7 總結(jié) 531
第22章 Nginx Lua開發(fā) 532
22.1 語言簡介 532
22.2 模塊簡介 533
22.2.1 http_lua 533
22.2.2 stream_lua 533
22.2.3 lua-resty-lib 534

22.3 開發(fā)準(zhǔn)備 534
22.4 指令簡介 535
22.4.1 配置指令 536
22.4.2 功能指令 536
22.4.3 指令關(guān)系圖 538
22.5 應(yīng)用開發(fā)流程 538
22.6 功能接口 539
22.6.1 運(yùn)行日志 539
22.6.2 時間與日期 540
22.6.3 變量 540
22.6.4 正則表達(dá)式 541
22.6.5 請求處理 542
22.6.6 請求轉(zhuǎn)發(fā) 544
22.6.7 子請求 545
22.6.8 定時器 546
22.6.9 共享內(nèi)存 546
22.7 開發(fā)示例 547
22.7.1 content handler 548
22.7.2 filter 549
22.7.3 upstream 550
22.7.4 subrequest 550
22.7.5 discard 551
22.7.6 echo 552
22.8 總結(jié) 552
第23章 Nginx調(diào)試與測試 554
23.1 調(diào)試 554
23.1.1 調(diào)試器 554
23.1.2 調(diào)試斷點(diǎn) 555
23.1.3 調(diào)試日志 556
23.2 功能測試 558
23.2.1 測試套件 559

23.2.2 測試用例 559
23.2.3 運(yùn)行測試 564
23.3 性能測試 564
23.3.1 ab 565
23.3.2 http_load 565
23.3.3 wrk 566
23.3.4 Test::Nginx 567
23.4 總結(jié) 568
第24章 Nginx性能分析 569
24.1 簡介 569
24.2 火焰圖 570
24.3 分析工具 572
24.3.1 使用方式 572
24.3.2 處理數(shù)據(jù) 573
24.4 動態(tài)追蹤 576
24.4.1 CPU分析 577
24.4.2 I/O分析 579
24.4.3 Memory分析 580
24.4.4 觀測工具 581
24.5 總結(jié) 582
第25章 結(jié)束語 583
25.1 本書的遺憾 583
25.2 下一步 583
25.3 臨別贈言 584
附錄A 推薦書目 585
附錄B 字符串格式化 587
附錄C 開發(fā)輔助工具 589

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號