TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Nginx實戰:基於Lua語言的配置、開發與架構詳解(簡體書)
滿額折

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

人民幣定價:79 元
定  價:NT$ 474 元
優惠價:87412
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:12 點
相關商品
商品簡介
目次

商品簡介

本書主要講解了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
7.14 獲取Nginx 的環境變量.............................................................................................................135
7.14.1 獲取環境所在的模塊..........................................................................................................135
7.14.2 確認調試模式......................................................................................................................136
7.14.3 獲取prefix 路徑...................................................................................................................136
7.14.4 獲取Nginx 的版本號...........................................................................................................136
7.14.5 獲取configure 信息.............................................................................................................136
7.14.6 獲取Ngx_Lua 的版本號......................................................................................................137
7.14.7 判斷worker 進程是否退出.................................................................................................137
7.14.8 獲取worker 進程的ID ........................................................................................................137
7.14.9 獲取worker 進程的數量.....................................................................................................137
7.15 定時任務.......................................................................................................................................138
7.15.1 創建定時任務......................................................................................................................138
7.15.2 性能優化..............................................................................................................................140
7.15.3 禁用的Lua API....................................................................................................................141
7.16 常用指令.......................................................................................................................................142
7.16.1 請求重定向..........................................................................................................................142
7.16.2 日誌記錄..............................................................................................................................144
7.16.3 請求中斷處理......................................................................................................................146
7.17 提升開發和測試效率.................................................................................................................149
7.17.1 斷開客戶端連接..................................................................................................................149
7.17.2 請求休眠..............................................................................................................................150
7.17.3 獲取系統時間......................................................................................................................150
7.17.4 編碼與解碼..........................................................................................................................152
7.17.5 防止SQL 注入.....................................................................................................................154
7.17.6 判斷是否為子請求..............................................................................................................155
7.17.7 設置MIME 類型..................................................................................................................156
7.18 小結................................................................................................................................................156
第8 章 Ngx_Lua 的執行階段....................................................................................................................157
8.1 init_by_lua_block...........................................................................................................................157
8.1.1 階段說明................................................................................................................................157
8.1.2 初始化配置............................................................................................................................158
8.1.3 控制初始值............................................................................................................................159
8.1.4 init_by_lua_file.......................................................................................................................160
8.1.5 可使用的Lua API 指令.........................................................................................................160
8.2 init_worker_by_lua_block ............................................................................................................160
8.2.1 階段說明................................................................................................................................160
8.2.2 啟動Nginx 的定時任務.........................................................................................................161
8.2.3 動態進行後端健康檢查.........................................................................................................162
8.3 set_by_lua_block............................................................................................................................165
8.3.1 階段說明................................................................................................................................165
8.3.2 變量賦值................................................................................................................................165
8.3.3 rewrite 階段的混用模式........................................................................................................166
8.3.4 阻塞事件................................................................................................................................167
8.3.5 被禁用的Lua API 指令.........................................................................................................167
8.4 rewrite_by_lua_block .........

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 412
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區