《Nginx Lua開發實戰Nginx Lua開發實戰》是2018年3月機械工業出版社出版的圖書,作者是李明江。本書主要講述了如何在Nginx中使用Lua開發套用系統。
基本介紹
- 中文名:Nginx Lua開發實戰
- 作者:李明江
- 出版社:機械工業出版社
- ISBN:9787111590293
內容簡介,圖書目錄,作者簡介,
內容簡介
這是一部講解如何在Nginx中使用Lua開發套用系統的實戰類著作,作者是一位擁有超過20年研發經驗的資深技術專家,內容的權利性毋庸置疑。
Nginx作為網際網路套用系統中的核心服務,被有廣泛套用。Nginx通過配置可以實現負載均衡、反向代理等功能,還可以通過擴展開發更為複雜的業務邏輯。這其中,使用Lua語言開發是*方便和*流行的方法。本書以套用系統開發為主線,講解了相關服務、模組和開發手冊,並提供了大量真實的案例。
全書分為5個部分:
第一部分:Nginx基礎篇(第1-5章)
首先,全面講解了Nginx的基本操作,並講解了MySQL、PostgreSQL、Redis、Memcached、MongoDB、OpenResty的基本操作;其次,分析了Nginx的工作流程和核心技術和架構。
第二部分:Lua腳本語言篇(第6-7章)
深入講解了Lua腳本語言的語法和Lua通用庫,旨在幫助讀者掌握Lua的腳本語言,進行業務邏輯編寫。
第三部分:Nginx開發技術篇(第8-10章)
講解了Nginx套用系統開發中常用的相關知識,包括JSON格式、nginx.conf配置和Nginx下Lua實現機制。讓讀者掌握開發過程中Nginx的配置和使用,同時了解Lua的實現機制,從而掌握在開發中選擇正確階段的使用Lua代碼。
第四部分 Nginx Lua開發實戰篇(第11-26章)
講解了Nginx下Lua常用模組以及示例代碼,並提供了一個TCP私有伺服器實例代碼和一個WebSocket接入伺服器實例代碼。實戰開發中,根據業務不同,會使用到非常多的模組,本章講解了常用的20多個模組,可以*大程度讓讀者節約查找資料的時間,還提供了2個示例程式,用於理解整個開發流程和技術使用方法。
第五部分 開發手冊篇(第27和28章)
提供了ngx-lua-module模組配置命令詳解和ngx_lua 函式詳解。模組命令和API函式是開發中經常使用到的資料,用於查找函式說明和選擇參數。
圖書目錄
前言
第一部分 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_b
作者簡介
李明江(Leelin)
資深軟體開發專家,安防領域技術專家,擁有超過20年的研發經驗。創辦過兩家公司,現任杭州蠻牛技術有限公司CEO兼研發總監。
曾經在信雅達等國內多家上市公司擔任研發要職,參與並主導了大量大型項目的研發過程。如南方電網廣州亞運會大型安保系統總體研發和管理,擔任總負責人;參與中國電信全球眼規範、國家電網安保平台規範、南方電網/國家電網視頻監控系統規範、公安部3111規範等規範的制定。
在C++、分散式平台開發、物聯網、雲計算、APP開發、信息安全等領域有非常深厚的積累,擅長Nginx和Lua開發相關的技術,有非常豐富的實踐經驗。此外,因為有多年的帶團隊和創業經歷,在團隊組建、技術方向確立、核心體系搭建、團隊建設、核心技術攻關等方面頗有心得。
讀者QQ群:196039071(Nginx Lua實戰)。