Nginx是一個(gè)高性能的輕量級(jí)Web服務(wù)器, 本書從配置文件的角度出發(fā), 介紹了多種關(guān)于Nginx配置的技巧。本書以模塊化風(fēng)格寫成, 幾乎每一章都是一個(gè)獨(dú)立的模塊, 讀者將能夠自由地在各個(gè)模塊間切換閱讀。全書分兩部分, 第1部分用9章內(nèi)容介紹了安裝Nginx及第三方模塊、配置向?qū)、使用mail模塊、Nginx作為反向代理、Nginx Http服務(wù)器、Nginx的開發(fā)、在Nginx中集成Lua以及故障排除技巧; 第二部分用4個(gè)附錄的形式介紹了指令參考、Rewrite規(guī)則指南、Nginx社區(qū)以及Solaris系統(tǒng)下的網(wǎng)絡(luò)調(diào)優(yōu)。
第1章 安裝Nginx及第三方模塊 1
1.1 使用包管理器安裝Nginx 2
1.1.1 在Centos上安裝Nginx 2
1.1.2 在Debian上安裝Nginx 3
1.2 從源代碼安裝Nginx 3
1.2.1 準(zhǔn)備編譯環(huán)境 3
1.2.2 從源代碼編譯 4
1.2.3 為Web或者M(jìn)ail服務(wù)器
配置Nginx 5
1.2.4 郵件代理的配置選項(xiàng) 6
1.2.5 指定路徑的配置選項(xiàng) 6
1.3 配置SSL支持 7
1.4 使用各種模塊 7
禁用不再使用的模塊 9
1.5 查找并安裝第三方模塊 10
1.6 添加對(duì)Lua的支持 11
1.7 組合在一起 11
1.8 小結(jié) 13
第2章 配置指南 14
2.1 基本配置格式 14
2.2 Nginx全局配置參數(shù) 15
2.3 使用include文件 16
2.4 HTTP的server部分 17
2.4.1 客戶端指令 17
2.4.2 文件I/O指令 18
2.4.3 Hash指令 19
2.4.4 Socket指令 19
2.4.5 示例配置文件 20
2.5 虛擬服務(wù)器部分 20
2.6 Locations—where,when,how 24
2.7 完整的示例配置文件 26
2.8 小結(jié) 27
第3章 使用mail模塊 29
3.1 基本代理服務(wù) 29
3.1.1 mail的server配置部分 30
3.1.2 POP3服務(wù) 32
3.1.3 IMAP服務(wù) 33
3.1.4 SMTP服務(wù) 33
3.1.5 使用SSL/TLS 34
3.1.6 完整的mail示例 37
3.2 認(rèn)證服務(wù) 38
3.3 與memcached結(jié)合 46
3.4 解釋日志文件 48
3.5 操作系統(tǒng)限制 50
3.6 小結(jié) 51
第4章 Nginx作為反向代理 52
4.1 反向代理簡(jiǎn)介 53
4.2 代理模塊 54
4.3 帶有cookie的遺留應(yīng)用程序 57
4.4 upstream模塊 58
4.5 保持活動(dòng)連接 59
4.6 上游服務(wù)器的類型 61
4.7 單個(gè)上游服務(wù)器 61
4.8 多個(gè)上游服務(wù)器 62
4.9 非HTTP型上游服務(wù)器 63
4.9.1 Memcached上游服務(wù)器 63
4.9.2 FastCGI上游服務(wù)器 64
4.9.3 SCGI上游服務(wù)器 65
4.9.4 uWSGI上游服務(wù)器 65
4.10 負(fù)載均衡 65
負(fù)載均衡算法 65
4.11 將if配置轉(zhuǎn)換為一個(gè)更現(xiàn)代的
解釋 66
4.12 使用錯(cuò)誤文件處理上游服務(wù)器
問題 70
4.13 確定客戶端真實(shí)的IP地址 72
4.14 小結(jié) 72
第5章 反向代理高級(jí)話題 73
5.1 安全隔離 74
5.1.1 使用SSL對(duì)流量進(jìn)行加密 74
5.1.2 使用SSL進(jìn)行客戶端身份
驗(yàn)證 76
5.1.3 基于原始IP地址阻止流量 78
5.2 孤立應(yīng)用程序組件的擴(kuò)展 80
5.3 反向代理服務(wù)器的性能調(diào)優(yōu) 83
5.3.1 緩沖數(shù)據(jù) 84
5.3.2 緩存數(shù)據(jù) 86
5.3.3 存儲(chǔ)數(shù)據(jù) 90
5.3.4 壓縮數(shù)據(jù) 91
5.4 小結(jié) 94
第6章 Nginx HTTP服務(wù)器 95
6.1 Nginx的系統(tǒng)架構(gòu) 95
6.2 HTTP核心模塊 96
6.2.1 server指令 97
6.2.2 Nginx中的日志 98
6.2.3 查找文件 101
6.2.4 域名解析 103
6.2.5 客戶端交互 104
6.3 使用limit指令防止濫用 106
6.4 約束訪問 110
6.5 流媒體文件 114
6.6 預(yù)定義變量 115
6.7 SPDY和HTTP/2 117
6.8 使用Nginx和PHP-FPM 118
6.9 一個(gè)Drupal的配置示例 121
6.9 將Nginx和uWSGI結(jié)合 129
一個(gè)Django的配置示例 129
6.10 小結(jié) 131
第7章 Nginx的開發(fā) 133
7.1 集成緩存 133
7.1.1 應(yīng)用程序沒有緩存 134
7.1.2 使用數(shù)據(jù)庫緩存 135
7.1.3 使用文件系統(tǒng)做緩存 138
7.2 動(dòng)態(tài)修改內(nèi)容 141
7.2.1 使用addition模塊 141
7.2.2 sub模塊 142
7.2.3 xslt模塊 143
7.3 使用服務(wù)器端包含SSI(Server
Side Include) 144
7.4 Nginx中的決策 146
7.5 創(chuàng)建安全鏈接 150
7.6 生成圖像 152
7.7 跟蹤網(wǎng)站訪問者 155
7.8 防止意外代碼執(zhí)行 156
7.9 小結(jié) 157
第8章 在Nginx中集成Lua 159
8.1 ngx_lua模塊 159
8.2 集成Lua 160
8.3 使用Lua記錄日志 163
8.4 小結(jié) 163
第9章 故障排除技巧 164
9.1 分析日志文件 164
9.1.1 錯(cuò)誤日志文件格式 164
9.1.2 錯(cuò)誤日志文件條目實(shí)例 166
9.2 配置高級(jí)日志記錄 168
9.2.1 調(diào)試日志記錄 169
9.2.2 在運(yùn)行時(shí)切換二進(jìn)制運(yùn)行
文件 169
9.2.3 使用訪問日志文件進(jìn)行
調(diào)試 175
9.3 常見的配置錯(cuò)誤 177
9.3.1 使用if取代try_files 178
9.3.2 使用if作為主機(jī)名切換 179
9.3.3 不使用server部分的配置追求
更好的效果 180
9.4 操作系統(tǒng)限制 181
9.4.1 文件描述符限制 181
9.4.2 網(wǎng)絡(luò)限制 183
9.5 性能問題 184
9.6 使用Stub Status模塊 186
9.7 小結(jié) 187
附錄A 指令參考 189
附錄B Rewrite規(guī)則指南 224
附錄C Nginx社區(qū) 236
附錄D Solaris系統(tǒng)下的網(wǎng)絡(luò)調(diào)優(yōu) 239