前言
第一部分 Nginx操作基礎
第1章 Nginx高效服務器 2
1.1 Nginx的特點 2
1.2 Nginx的安裝 3
1.3 configure命令參數 7
1.4 小結 12
第2章 數據庫的基本操作 13
2.1 Nginx應用中的數據庫 13
2.2 MySQL關係型數據庫 15
2.2.1 yum安裝方法 16
2.2.2 使用mysql測試服務 18
2.2.3 MySQL文件分布 19
2.2.4 數據庫操作 19
2.3 Redis內存數據庫 22
2.3.1 Redis安裝 22
2.3.2 啓動Redis服務 23
2.3.3 Redis 配置 23
2.3.4 參數說明 26
2.3.5 數據類型 29
2.4 PostgreSQL關係型數據庫 31
2.5 Memcached內存數據庫 33
2.5.1 Memcached安裝 34
2.5.2 連接編輯 34
2.5.3 管理Memcached服務 35
2.5.4 Memcached命令 37
2.6 MongoDB分布式NoSQL數據庫 42
2.6.1 MongoDB安裝 43
2.6.2 mongod.conf配置說明 45
2.7 小結 48
第3章 OpenResty 49
3.1 OpenResty:概述 49
3.2 OpenResty的組成 50
3.3 OpenResty的安裝 52
3.4 Nginx多實例 54
3.5 小結 54
第4章 Nginx核心技術 55
4.1 Nginx設計目標 55
4.2 Nginx架構 57
4.2.1 事件驅動 57
4.2.2 異步多階段處理 59
4.2.3 模塊化設計 61
4.2.4 管理進程、工作進程設計 63
4.2.5 內存池 65
4.2.6 連接池 66
4.2.7 時間緩存 66
4.2.8 延遲關閉 67
4.2.9 跨平颱 67
4.2.10 HTTP模塊管道過濾模式 67
4.2.11 keepalive 68
4.2.12 pipeline 69
4.3 小結 69
第5章 Nginx的工作流程 70
5.1 Nginx的啓動流程 70
5.2 管理進程的工作流程 72
5.3 工作進程的工作流程 75
5.4 配置加載流程 76
5.5 HTTP框架初始化流程 79
5.6 HTTP模塊調用流程 81
5.7 HTTP請求處理流程 82
5.8 小結 83
第二部分 Lua腳本語言
第6章 Lua教程 86
6.1 Lua基礎 86
6.1.1 Lua的特性 86
6.1.2 Lua的應用場景 87
6.1.3 安裝Lua環境 87
6.2 Lua基本語法 88
6.2.1 第一個Lua程序 88
6.2.2 注釋 89
6.2.3 標識符 90
6.2.4 關鍵詞 90
6.2.5 全局變量 90
6.3 Lua的數據類型 90
6.4 Lua變量 96
6.4.1 賦值語句 96
6.4.2 索引 97
6.5 Lua循環 98
6.6 Lua流程控製 98
6.7 Lua函數 99
6.7.1 函數的定義 99
6.7.2 多返迴值 100
6.7.3 可變參數 101
6.8 Lua運算符 101
6.8.1 算術運算符 102
6.8.2 關係運算符 102
6.8.3 邏輯運算符 103
6.8.4 其他運算符 104
6.8.5 運算符的優先級 105
6.9 Lua字符串 106
6.10 Lua數組 107
6.10.1 一維數組 107
6.10.2 多維數組 108
6.11 Lua迭代器 109
6.11.1 泛型for迭代器 109
6.11.2 無狀態的迭代器 110
6.11.3 多狀態的迭代器 111
6.12 Lua錶 112
6.13 Lua模塊與包 113
6.13.1 require函數 114
6.13.2 加載機製 115
6.13.3 C包 115
6.14 Lua元錶 116
6.14.1 _index元方法 117
6.14.2 _newindex元方法 118
6.14.3 為錶添加運算符 119
6.14.4 _call元方法 119
6.14.5 _tostring元方法 120
6.15 Lua協同程序 121
6.15.1 基本語法 121
6.15.2 生産者–消費者問題 124
6.16 Lua錯誤處理 125
6.16.1 語法錯誤 125
6.16.2 運行錯誤 125
6.16.3 錯誤處理 126
6.16.4 error函數 126
6.16.5 pcall、xpcall、debug 127
6.17 Lua調試 128
6.18 Lua垃圾迴收 130
6.19 Lua麵嚮對象 131
6.19.1 Lua中麵嚮對象 132
6.19.2 Lua繼承 134
6.20 Lua數據庫訪問 136
6.21 小結 137
第7章 Lua通用庫 138
7.1 字符串庫 138
7.2 錶庫 141
7.3 文件I/O庫 143
7.3.1 簡單模式 144
7.3.2 完全模式 145
7.3.3 其他方法 146
7.4 數學庫 147
7.5 操作係統庫 150
7.6 小結 151
第三部分 Nginx開發技術
第8章 JSON數據交換格式 154
8.1 什麼是JSON 154
8.2 JSON轉換為JavaScript對象 155
8.3 JSON與XML的比較 155
8.4 JSON語法規則 156
8.5 格式化 157
8.6 小結 158
第9章 nginx.conf文件配置 159
9.1 默認nginx.conf文件 159
9.2 nginx.conf示例 162
9.3 全局配置與頂層配置塊 166
9.3.1 main全局配置 166
9.3.2 events配置塊 170
9.3.3 http服務器配置塊 172
9.3.4 ngx_http_core_module變量 194
9.3.5 stream 195
9.4 中文版nginx.conf 201
9.5 小結 204
第10章 Nginx下Lua實現機製 206
10.1 ngx_lua原理 206
10.2 HTTP請求的處理階段 209
10.3 ngx_lua的處理階段 210
10.4 Lua階段解析 212
10.4.1 init_by_lua 212
10.4.2 init_worker_by_lua 213
10.4.3 set_by_lua 214
10.4.4 rewrite_by_lua 216
10.4.5 access_by_lua 217
10.4.6 content_by_lua 218
10.4.7 header_filter_by_lua 220
10.4.8 body_filter_by_lua 220
10.4.9 log_by_lua 220
10.4.10 balancer_by_lua_block 221
10.5 小結 222
第四部分 Nginx Lua開發實戰
第11章 Redis操作 224
11.1 Redis操作方法概述 224
11.2 HttpRedis訪問方法 225
11.2.1 示例 225
11.2.2 HttpRedis API 226
11.2.3 HttpRedis變量 228
11.3 HttpRedis2Module訪問方法 229
11.3.1 示例 229
11.3.2 nginx.conf配置 230
11.3.3 常用指令 231
11.3.4 技術點 234
11.3.5 應答包解析 238
11.4 lua-resty-redis訪問方法 239
11.4.1 示例 239
11.4.2 API函數 240
11.4.3 技術點 244
11.4.4 問題列錶 246
11.4.5 限製 247
11.4.6 安裝 247
11.5 小結 247
第12章 MySQL操作 248
12.1 lua-restry-mysql訪問方式 248
12.1.1 示例 248
12.1.2 安裝 250
12.1.3 方法與函數 251
12.1.4 多結果集返迴示例 254
12.1.5 其他注意事項 255
12.1.6 限製 255
12.2 HttpDrizzleModule訪問方式 255
12.2.1 示例 256
12.2.2 安裝 257
12.2.3 技術點 258
12.2.4 配置指令 259
12.2.5 變量 263
12.2.6 輸齣格式 264
12.3 HttpDrizzleModule完整示例 265
12.4 小結 272
第13章 Memcached操作 273
13.1 mem-nginx-module訪問方式 273
13.1.1 概述 273
13.1.2 命令 276
13.1.3 指令 279
13.1.4 安裝 281
13.1.5 說明 281
13.1.6 示例 282
13.2 lua-resty-memcached 訪問方式 285
13.2.1 概述 285
13.2.2 API 286
13.2.3 自動日誌 291
13.2.4 限製 291
13.3 小結 291
第14章 PostgreSQL操作 292
14.1 概述 292
14.2 配置指令 293
14.3 配置變量 295
14.4 示例 296
14.5 小結 298
第15章 MongoDB操作 299
15.1 安裝 299
15.2 配置 299
15.3 操作函數 300
15.3.1 連接對象方法 300
15.3.2 數據庫對象方法 301
15.3.3 列對象方法 301
15.4 示例 302
15.5 小結 303
第16章 bit庫的使用 304
16.1 示例 304
16.2 安裝 305
16.3 函數 305
16.4 說明 307
16.5 小結 308
第17章 lfs庫的使用 309
17.1 目錄迭代示例 309
17.2 安裝 310
17.3 LuaFileSystem函數 310
17.4 小結 312
第18章 resty.http庫的使用 313
18.1 安裝 313
18.2 概述 314
18.3 函數 315
18.3.1 連接類 315
18.3.2 應答類 318
18.3.3 代理類 319
18.3.4 工具類 319
18.4 小結 320
第19章 lcurl庫的使用 321
19.1 安裝 321
19.1.1 安裝libcurl 321
19.1.2 安裝lcurl 322
19.2 示例 322
19.3 函數 324
19.3.1 httpform類 325
19.3.2 easy類 327
19.3.3 multi類 331
19.3.4 error類 333
19.3.5 share類 333
19.4 常用變量 334
19.4.1 字符串數組類選項 334
19.4.2 字符串選項 334
19.4.3 數值型選項 336
19.4.4 布爾型選項 337
19.5 完整示例 338
19.6 小結 340
第20章 FFI擴展C庫 341
20.1 示例 341
20.1.1 調用外部C函數 341
20.1.2 使用C結構體數據 342
20.2 FFI庫的使用 344
20.2.1 載入FFI庫 344
20.2.2 訪問標準係統函數 344
20.2.3 訪問zlib壓縮庫 345
20.2.4 為一個C類型定義元方法 346
20.2.5 轉換C語法 347
20.3 FFI API 348
20.3.1 聲明和訪問外部符號 348
20.3.2 創建cdata對象 349
20.3.3 C類型信息 349
20.3.4 功能函數 350
20.3.5 特定目標信息 351
20.3.6 方法迴調 351
20.3.7 擴展標準庫函數 351
20.4 調用curl庫的完整示例 352
20.5 小結 352
第21章 cjson庫的使用 353
21.1 示例 353
21.2 函數 354
21.3 變量 358
21.4 小結 358
第22章 lua-resty-template類的使用 359
22.1 示例 359
22.2 模闆符號 360
22.2.1 短轉義符號 361
22.2.2 上下文錶中的復雜key 361
22.2.3 HTML轉義 361
22.2.4 保留的上下文key和評論 362
22.3 安裝 363
22.3.1 Nginx/OpenResty配置 363
22.3.2 使用document_root 363
22.3.3 使用template_root 364
22.3.4 使用template_location 364
22.4 Lua API 364
22.5 模闆預編譯 368
22.6 模闆助手 368
22.7 用法示例 369
22.7.1 引用模闆 369
22.7.2 Layouts的views 370
22.7.3 使用Blocks 371
22.7.4 繼承 373
22.7.5 Macros 374
22.7.6 調用模闆中的方法 375
22.7.7 模闆內嵌的Angular或其他標簽/模闆 376
22.7.8 模闆內嵌的Markdown 376
22.7.9 LSP 377
22.8 FAQ 378
22.9 小結 379
第23章 WebSocket的使用 380
23.1 示例 381
23.2 安裝 383
23.3 resty.websocket.server 383
23.4 resty.websocket.client 386
23.5 resty.websocket.protocol 389
23.6 使用注意事項 390
23.7 小結 390
第24章 TCP私有服務器實例 391
24.1 協議 391
24.1.1 協議總體要求 391
24.1.2 包頭定義 392
24.1.3 協議命令 393
24.2 DDP係統架構 394
24.3 DDP服務實現 395
24.3.1 nginx.conf配置 395
24.3.2 init.lua 398
24.3.3 ddp.lua 399
24.3.4 DDP代碼解析 405
24.3.5 Redis和MySQL的
location 407
24.3.6 管理頁麵REST操作 411
24.4 小結 412
第25章 WebSocket接入服務器實戰 413
25.1 nginx.conf內容 413
25.2 ws_svr.lua內容 421
25.3 update_alarts代碼 436
25.4 小結 438
第26章 Nginx應用簡述 439
26.1 簡單係統 439
26.2 讀寫分離係統 439
26.3 引入緩存係統 440
26.4 緩存主從係統 441
26.5 小結 442
第五部分 開發手冊
第27章 ngx_lua_module模塊配置指令詳解 444
27.1 概述 444
27.2 Lua配置順序 456
27.3 配置指令 457
27.4 小結 487
第28章 ngx_lua API詳解 488
28.1 概述 488
28.2 API與常量 491
28.3 小結 565
· · · · · · (
收起)