Nginx實戰:基於Lua語言的配置、開發與架構詳解

書籍信息,內容簡介,圖書目錄,

書籍信息

作譯者:王力,湯永全
出版時間:2019-03千 字 數:461版次:01-01頁 數:344
開本:16開裝幀:I S B N :9787121354601
換版:
紙質書定價:¥79.0

內容簡介

本書主要講解了Nginx 在反向代理和套用開發中的作用,閱讀本書可以了解Nginx 在網際網路開發中扮演的多個角色,充分利用這些角色的各項功能有助於提升服務的整體性能。本書所介紹的大部分功能是通過Nginx+Lua 進行開發和配置的,但並不要求讀者精通Lua,在必要的位置,本書會對Lua 進行選擇性講解。涉及實戰的內容會有配套源碼,方便讀者學習和使用。本書適合廣大運維人員和開發人員學習,對使用Nginx 完成各種服務架構感興趣的架構師也可以閱讀本書。閱讀本書需要有對Nginx 的初級或中級配置經驗。

圖書目錄

第1 章 Nginx 學前必知................................................................................................................................. 1
1.1 HTTP 請求報文................................................................................................................................. 1
1.2 HTTP 回響報文................................................................................................................................. 2
1.3 安裝Nginx......................................................................................................................................... 2
1.4 支持HTTPS....................................................................................................................................... 4
1.5 添加模組............................................................................................................................................ 4
1.6 小結..................................................................................................................................................... 4
第2 章 基礎配置............................................................................................................................................. 5
2.1 Nginx 指令和指令塊........................................................................................................................ 5
2.2 Nginx 基本配置說明........................................................................................................................ 6
2.2.1 main 配置.................................................................................................................................. 6
2.2.2 與客戶端有關的配置............................................................................................................... 7
2.2.3 server 塊..................................................................................................................................... 7
2.2.4 location 塊.................................................................................................................................. 8
2.3 include 的使用................................................................................................................................... 9
2.4 常見配置............................................................................................................................................ 9
2.4.1 常見配置註解..........................................................................................................................10
2.4.2 常見配置實戰技巧..................................................................................................................11
2.5 內置變數...........................................................................................................................................13
2.5.1 常見內置變數..........................................................................................................................13
2.5.2 常見內置變數實戰技巧...........................................................................................................15
2.6 小結....................................................................................................................................................16
第3 章 強化基礎配置....................................................................................................................................17
3.1 牢記Context .....................................................................................................................................17
3.2 獲取請求的IP 地址........................................................................................................................18
3.2.1 獲取用戶的真實IP 地址.........................................................................................................18
3.2.2 防止IP 地址偽造.....................................................................................................................19
3.2.3 後端伺服器對IP 地址的需求.................................................................................................19
3.3 管理請求的行為..............................................................................................................................20
3.3.1 限制IP 地址的訪問.................................................................................................................20
3.3.2 auth 身份驗證...........................................................................................................................21
3.3.3 利用LDAP 服務加強安全......................................................................................................22
3.3.4 satisfy 二選一的訪問限制功能...............................................................................................23
3.4 proxy 代理.........................................................................................................................................23
3.4.1 proxy_pass 請求代理規則........................................................................................................24
3.4.2 減少後端伺服器的網路開銷...................................................................................................24
3.4.3 控制請求頭和請求體..............................................................................................................25
3.4.4 控制請求和後端伺服器的互動時間.......................................................................................26
3.5 upstream 使用手冊..........................................................................................................................26
3.5.1 代理多台伺服器......................................................................................................................27
3.5.2 故障轉移..................................................................................................................................28
3.5.3 負載均衡..................................................................................................................................29
3.5.4 通過hash 分片提升快取命中率..............................................................................................29
3.5.5 利用長連線提升性能..............................................................................................................30
3.5.6 利用resolver 加速對內部域名的訪問....................................................................................31
3.6 rewrite 使用手冊..............................................................................................................................32
3.6.1 內部重定向..............................................................................................................................32
3.6.2 域名跳轉..................................................................................................................................33
3.6.3 跳轉POST 請求.......................................................................................................................34
3.6.4 設定變數的值..........................................................................................................................34
3.7 限速白名單.......................................................................................................................................35
3.8 日誌....................................................................................................................................................36
3.8.1 記錄自定義變數......................................................................................................................36
3.8.2 日誌格式規範..........................................................................................................................36
3.8.3 日誌存儲..................................................................................................................................37
3.9 HTTP 執行階段................................................................................................................................38
3.10 小結..................................................................................................................................................39
第4 章 常用模組精解....................................................................................................................................40
4.1 定製HTTP 頭信息..........................................................................................................................40
4.1.1 使用ngx_http_headers_module 設定回響頭...........................................................................40
4.1.2 使用headers-more-nginx 控制請求頭和回響頭.....................................................................43
4.2 第三方模組set-misc-nginx............................................................................................................45
4.2.1 設定變數..................................................................................................................................46
4.2.2 防止SQL 注入.........................................................................................................................46
4.2.3 字元串非轉義和轉義..............................................................................................................47
4.2.4 基於鍵值的集群分片..............................................................................................................48
4.2.5 base 編碼..................................................................................................................................48
4.2.6 md5 編碼..................................................................................................................................50
4.2.7 生成隨機數..............................................................................................................................50
4.2.8 本地時間的輸出......................................................................................................................52
4.2.9 實戰經驗..................................................................................................................................52
4.3 圖片的處理.......................................................................................................................................53
4.3.1 image_filter 圖片處理..............................................................................................................53
4.3.2 採用漸進式方式打開JPEG 圖片............................................................................................55
4.3.3 WebP 格式................................................................................................................................56
4.3.4 最佳化圖片..................................................................................................................................56
4.3.5 實戰經驗:動態切圖..............................................................................................................58
4.4 TCP 和UDP 代理............................................................................................................................58
4.4.1 代理配置說明..........................................................................................................................58
4.4.2 DNS 服務的反向代理..............................................................................................................62
4.4.3 MySQL 集群代理配置.............................................................................................................62
4.4.4 實戰經驗..................................................................................................................................63
4.5 常用模組介紹...................................................................................................................................63
4.5.1 基於訪問IP 地址跳轉到對應城市.........................................................................................63
4.5.2 修改回響內容..........................................................................................................................65
4.5.3 零像素檔案的生成及其作用...................................................................................................66
4.5.4 圖片的防盜鏈..........................................................................................................................67
4.6 小結....................................................................................................................................................68
第5 章 快取系統............................................................................................................................................69
5.1 快取配置說明...................................................................................................................................69
5.2 控制快取有效期..............................................................................................................................71
5.3 性能最佳化...........................................................................................................................................72
5.3.1 快取未命中的最佳實踐...........................................................................................................72
5.3.2 橫向擴展最佳實踐..................................................................................................................75
5.3.3 避免硬碟I/O 阻塞...................................................................................................................76
5.3.4 集群模式..................................................................................................................................77
5.4 高可用方案.......................................................................................................................................77
5.5 proxy_cache 配置模板....................................................................................................................78
5.6 小結....................................................................................................................................................81
第6 章 引入Lua.............................................................................................................................................82
6.1 引入Lua 的原因..............................................................................................................................82
6.2 Lua 和LuaJIT ...................................................................................................................................83
6.3 環境搭建...........................................................................................................................................83
6.4 Lua 的數據類型...............................................................................................................................84
6.4.1 類型說明..................................................................................................................................84
6.4.2 類型示例..................................................................................................................................85
6.5 表達式................................................................................................................................................89
6.5.1 算術運算符..............................................................................................................................89
6.5.2 關係運算符..............................................................................................................................90
6.5.3 邏輯運算符..............................................................................................................................91
6.5.4 字元串連線和字元串長度計算...............................................................................................92
6.5.5 運算符優先權..........................................................................................................................93
6.6 變數....................................................................................................................................................93
6.6.1 全局變數..................................................................................................................................94
6.6.2 局部變數..................................................................................................................................94
6.6.3 變數賦值..................................................................................................................................94
6.7 流程控制...........................................................................................................................................95
6.7.1 if-else ........................................................................................................................................95
6.7.2 for 循環.....................................................................................................................................96
6.7.3 while 循環.................................................................................................................................97
6.7.4 break 和return ..........................................................................................................................97
6.8 函式....................................................................................................................................................98
6.8.1 函式格式..................................................................................................................................98
6.8.2 傳參方式..................................................................................................................................99
6.8.3 函式的創建位置....................................................................................................................100
6.9 模組..................................................................................................................................................100
6.9.1 模組格式................................................................................................................................101
6.9.2 載入模組................................................................................................................................101
6.10 Lua 常見操作...............................................................................................................................102
6.10.1 操作table .............................................................................................................................102
6.10.2 定義字元串..........................................................................................................................103
6.10.3 字元串連線..........................................................................................................................104
6.11 引入Lua 的插曲..........................................................................................................................104
6.12 小結................................................................................................................................................105
第7 章 Lua-Nginx-Module 常用指令......................................................................................................106
7.1 Nginx 和OpenResty ......................................................................................................................106
7.2 安裝Ngx_Lua ................................................................................................................................107
7.3 牢記Context ...................................................................................................................................108
7.4 Hello World .....................................................................................................................................108
7.5 避免I/O 阻塞..................................................................................................................................109
7.6 定義模組搜尋路徑........................................................................................................................109
7.6.1 定義Lua 模組的搜尋路徑.....................................................................................................109
7.6.2 定義C 模組的搜尋路徑........................................................................................................110
7.7 讀/寫Nginx 的內置變數..............................................................................................................110
7.8 控制請求頭.....................................................................................................................................111
7.8.1 添加請求頭............................................................................................................................111
7.8.2 清除請求頭............................................................................................................................112
7.8.3 獲取請求頭............................................................................................................................112
7.9 控制回響頭.....................................................................................................................................113
7.9.1 獲取回響頭............................................................................................................................113
7.9.2 修改回響頭............................................................................................................................114
7.9.3 清除回響頭............................................................................................................................116
7.10 讀取請求體...................................................................................................................................116
7.10.1 強制獲取請求體..................................................................................................................116
7.10.2 用同步非阻塞方式獲取請求體...........................................................................................117
7.10.3 使用場景示例......................................................................................................................118
7.10.4 使用建議..............................................................................................................................121
7.11 輸出回響體...................................................................................................................................121
7.11.1 異步傳送回響體..................................................................................................................121
7.11.2 同步傳送回響體..................................................................................................................122
7.12 正則表達式...................................................................................................................................124
7.12.1 單一捕獲..............................................................................................................................124
7.12.2 全部捕獲..............................................................................................................................125
7.12.3 更高效的匹配和捕獲..........................................................................................................126
7.12.4 替換數據..............................................................................................................................128
7.12.5 轉義符號..............................................................................................................................129
7.13 子請求............................................................................................................................................130
7.13.1 請求方法..............................................................................................................................130
7.13.2 單一子請求..........................................................................................................................130
7.13.3 並發子請求..........................................................................................................................134

相關詞條

熱門詞條

聯絡我們