Nginx應(yīng)用與運(yùn)維實(shí)戰(zhàn)
定 價(jià):109 元
- 作者:王小東
- 出版時(shí)間:2020/8/1
- ISBN:9787111659921
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類(lèi):TP368.5
- 頁(yè)碼:0
- 紙張:
- 版次:
- 開(kāi)本:16開(kāi)
內(nèi)容簡(jiǎn)介
這是一部基于Nginx新版本和云原生應(yīng)用場(chǎng)景系統(tǒng)講解Nginx的著作,是作者十余年運(yùn)維經(jīng)驗(yàn)的總結(jié)。本書(shū)從應(yīng)用、運(yùn)維以及與Kubernetes和微服務(wù)集成3個(gè)維度對(duì)Nginx的基礎(chǔ)知識(shí)、工作原理、核心應(yīng)用、運(yùn)維管理、集成擴(kuò)展等重點(diǎn)內(nèi)容進(jìn)行了全面、細(xì)致的講解。完全以實(shí)戰(zhàn)為導(dǎo)向,包含大量的配置案例和示例代碼,能幫助讀者快速掌握并在實(shí)際工作中熟練應(yīng)用Nginx。
本書(shū)共13章,分為4個(gè)部分。
第壹部分 Nginx介紹(第1~4章)
首先,簡(jiǎn)要分析了Nginx的架構(gòu)特點(diǎn)及實(shí)現(xiàn)原理;其次,講解了Nginx及其衍生版本Tengine、OpenResty的編譯與部署;接著,全面介紹了Nginx的核心配置指令;*后,講解了動(dòng)態(tài)賦值、訪問(wèn)控制和數(shù)據(jù)處理這3個(gè)Nginx的HTTP功能模塊配置指令。
第二部分 應(yīng)用實(shí)戰(zhàn)(第5~8章)
分別介紹Nginx 在Web服務(wù)、代理服務(wù)、緩存服務(wù)和負(fù)載均衡等方面的應(yīng)用實(shí)戰(zhàn),對(duì)于所涉及的每個(gè)模塊,不僅詳細(xì)分析了相關(guān)的技術(shù)特點(diǎn),還給出了具體的配置指令和配置樣例。
第三部分 運(yùn)維管理(第9~11章)
首先介紹Nginx的日志配置及基于ELK的日志分析,其次講解Nginx 的狀態(tài)監(jiān)控配置,以及如何利用監(jiān)控工具Prometheus、Zabbix實(shí)現(xiàn)對(duì)Nginx的監(jiān)控管理;*后介紹如何基于LVS、Keepalived搭建Nginx集群負(fù)載均衡架構(gòu),以及如何結(jié)合Jenkins、GitLab和Ansible快速搭建Web化的Nginx集群配置管理框架。
第四部分 Nginx與Kubernetes和微服務(wù)的應(yīng)用集成(第12、13章)
分別介紹Nginx在Kubernetes、微服務(wù)架構(gòu)中的應(yīng)用,包括在Kubernetes中Nginx Ingress 的部署、管理與配置,以及基于OpenResty的開(kāi)源微服務(wù)網(wǎng)關(guān)軟件Kong的部署與應(yīng)用。
前言
第1章 Nginx概述1
1.1 Nginx的不同版本1
1.1.1 開(kāi)源版Nginx2
1.1.2 商業(yè)版Nginx Plus3
1.1.3 分支版本Tengine4
1.1.4 擴(kuò)展版本OpenResty4
1.2 Nginx源碼架構(gòu)淺析5
1.2.1 多進(jìn)程模型6
1.2.2 工作流機(jī)制9
1.2.3 模塊化12
第2章 Nginx編譯及部署14
2.1 編譯環(huán)境準(zhǔn)備14
2.1.1 操作系統(tǒng)的準(zhǔn)備14
2.1.2 Linux內(nèi)核參數(shù)15
2.2 Nginx源碼編譯17
2.2.1 Nginx源碼獲取17
2.2.2 編譯配置參數(shù)17
2.2.3 代碼編譯20
2.2.4 添加第三方模塊21
2.3 Tengine源碼編譯21
2.3.1 Tengine源碼獲取21
2.3.2 編譯配置參數(shù)22
2.3.3 代碼編譯22
2.3.4 Tengine集成的模塊22
2.4 OpenResty源碼編譯24
2.4.1 OpenResty源碼獲取24
2.4.2 編譯配置參數(shù)24
2.4.3 代碼編譯25
2.4.4 OpenResty集成的模塊26
2.5 Nginx部署28
2.5.1 環(huán)境配置28
2.5.2 命令行參數(shù)28
2.5.3 注冊(cè)系統(tǒng)服務(wù)29
2.6 Nginx的Docker容器化部署30
2.6.1 Docker簡(jiǎn)介30
2.6.2 Docker環(huán)境安裝31
2.6.3 Dockerfile常用命令及編寫(xiě)31
2.6.4 Nginx Docker運(yùn)行33
第3章 Nginx核心配置指令35
3.1 Nginx配置文件解析35
3.1.1 配置文件目錄36
3.1.2 配置文件結(jié)構(gòu)36
3.1.3 配置文件中的計(jì)量單位38
3.1.4 配置文件中的哈希表39
3.2 Nginx的進(jìn)程核心配置指令39
3.2.1 進(jìn)程管理39
3.2.2 進(jìn)程調(diào)優(yōu)40
3.2.3 進(jìn)程調(diào)試44
3.2.4 事件處理45
3.2.5 核心指令配置樣例48
3.3 HTTP核心配置指令48
3.3.1 初始化服務(wù)49
3.3.2 HTTP請(qǐng)求處理55
3.3.3 訪問(wèn)路由location65
3.3.4 訪問(wèn)重寫(xiě)rewrite69
3.3.5 訪問(wèn)控制73
3.3.6 數(shù)據(jù)處理76
3.3.7 關(guān)閉連接85
3.3.8 日志記錄87
3.3.9 HTTP核心配置樣例87
第4章 Nginx HTTP模塊詳解91
4.1 動(dòng)態(tài)賦值功能模塊91
4.1.1 根據(jù)瀏覽器動(dòng)態(tài)賦值92
4.1.2 根據(jù)IP動(dòng)態(tài)賦值94
4.1.3 根據(jù)IP動(dòng)態(tài)獲取城市信息95
4.1.4 比例分配賦值98
4.1.5 變量映射賦值98
4.2 訪問(wèn)控制功能模塊101
4.2.1 訪問(wèn)鏡像模塊101
4.2.2 referer請(qǐng)求頭控制模塊102
4.2.3 連接校驗(yàn)?zāi)K104
4.2.4 源IP訪問(wèn)控制模塊105
4.2.5 基本認(rèn)證模塊106
4.2.6 認(rèn)證轉(zhuǎn)發(fā)模塊107
4.2.7 用戶(hù)cookie模塊109
4.2.8 并發(fā)連接數(shù)限制模塊112
4.2.9 請(qǐng)求頻率限制模塊114
4.3 數(shù)據(jù)處理功能模塊116
4.3.1 首頁(yè)處理116
4.3.2 圖片處理118
4.3.3 響應(yīng)處理121
4.3.4 數(shù)據(jù)修改124
4.3.5 gzip壓縮126
第5章 Nginx Web服務(wù)應(yīng)用實(shí)戰(zhàn)130
5.1 靜態(tài)文件服務(wù)器的搭建130
5.1.1 靜態(tài)Web服務(wù)器130
5.1.2 文件下載服務(wù)器131
5.1.3 偽動(dòng)態(tài)SSI服務(wù)器132
5.2 HTTPS安全服務(wù)器的搭建137
5.2.1 配置指令137
5.2.2 HTTPS基本配置139
5.2.3 HTTPS密鑰交換算法141
5.2.4 HTTPS會(huì)話緩存142
5.2.5 HTTPS雙向認(rèn)證配置143
5.2.6 HTTPS吊銷(xiāo)證書(shū)配置144
5.2.7 HTTPS配置樣例145
5.3 PHP網(wǎng)站搭建146
5.3.1 FastCGI模塊指令146
5.3.2 PHP環(huán)境安裝150
5.3.3 PHP網(wǎng)站配置樣例151
5.3.4 FastCGI集群負(fù)載及緩存152
5.4 Python網(wǎng)站的搭建154
5.4.1 CGI、FastCGI、SCGI、WSGI154
5.4.2 uWSGI模塊指令155
5.4.3 Python網(wǎng)站的搭建159
5.5 XSLT轉(zhuǎn)換服務(wù)器162
5.5.1 模塊配置指令162
5.5.2 XSLT服務(wù)器配置樣例162
5.6 偽流媒體服務(wù)器的搭建164
5.6.1 模塊配置指令165
5.6.2 偽流媒體配置樣例165
5.7 HTTP增強(qiáng)協(xié)議服務(wù)器的搭建168
5.7.1 HTTP/2協(xié)議服務(wù)168
5.7.2 WebDAV協(xié)議服務(wù)169
第6章 Nginx代理服務(wù)應(yīng)用實(shí)戰(zhàn)173
6.1 HTTP代理173
6.1.1 模塊指令173
6.1.2 正向代理177
6.1.3 HTTP的反向代理179
6.1.4 HTTPS的反向代理181
6.1.5 反向代理的真實(shí)客戶(hù)端IP184
6.2 TCP/UDP代理185
6.2.1 stream核心模塊185
6.2.2 stream輔助模塊187
6.2.3 TCP/UDP代理194
6.2.4 基于SSL的TCP代理197
6.2.5 TCP/UDP代理的真實(shí)客戶(hù)端IP199
6.3 gRPC代理202
6.3.1 gRPC介紹202
6.3.2 gRPC模塊指令202
6.3.3 gRPC反向代理配置204
第7章 Nginx緩存服務(wù)應(yīng)用實(shí)戰(zhàn)206
7.1 Web緩存206
7.1.1 客戶(hù)端緩存207
7.1.2 正向代理緩存211
7.1.3 內(nèi)容分發(fā)網(wǎng)絡(luò)211
7.1.4 反向代理緩存212
7.2 Nginx緩存模塊213
7.2.1 代理緩存模塊213
7.2.2 Memcached緩存模塊218
7.3 Nginx緩存應(yīng)用219
7.3.1 代理緩存服務(wù)器219
7.3.2 鏡像緩存應(yīng)用221
7.3.3 Memcached緩存應(yīng)用223
7.3.4 客戶(hù)端緩存控制226
7.4 緩存服務(wù)的管理與維護(hù)227
7.4.1 模塊編譯228
7.4.2 模塊指令228
第8章 Nginx負(fù)載均衡應(yīng)用實(shí)戰(zhàn)231
8.1 Nginx負(fù)載均衡模塊231
8.1.1 服務(wù)器配置指令232
8.1.2 負(fù)載均衡策略指令234
8.2 負(fù)載均衡策略236
8.2.1 輪詢(xún)236
8.2.2 一致性哈希237
8.2.3 IP哈希239
8.2.4 最少連接240
8.2.5 隨機(jī)負(fù)載算法241
8.3 負(fù)載均衡配置242
8.3.1 負(fù)載均衡的長(zhǎng)連接242
8.3.2 upstream的容錯(cuò)機(jī)制245
8.3.3 動(dòng)態(tài)更新upstream248
8.3.4 HTTP負(fù)載均衡配置253
8.3.5 FastCGI負(fù)載均衡配置253
8.3.6 uWSGI負(fù)載均衡配置254
8.3.7 gRPC負(fù)載均衡配置254
8.3.8 Memcached負(fù)載均衡配置255
8.4 TCP/UDP負(fù)載均衡255
8.4.1 TCP/UDP負(fù)載均衡255
8.4.2 TCP/UDP負(fù)載均衡的容錯(cuò)機(jī)制257
第9章 Nginx日志管理259
9.1 Nginx日志配置259
9.1.1 訪問(wèn)日志259
9.1.2 錯(cuò)誤日志263
9.1.3 日志歸檔Logrotate264
9.1.4 日志輸出到syslog268
9.2 Nginx日志收集分析269
9.2.1 ELK簡(jiǎn)介269
9.2.2 ELK安裝271
9.2.3 Nginx日志分析276
第10章 Nginx監(jiān)控配置及管理278
10.1 Nginx連接狀態(tài)監(jiān)控278
10.1.1 Nginx連接狀態(tài)278
10.1.2 Nginx連接狀態(tài)模塊指令280
10.1.3 基于Zabbix的連接狀態(tài)監(jiān)控280
10.2 HTTP主機(jī)狀態(tài)監(jiān)控282
10.2.1 模塊編譯282
10.2.2 模塊配置指令282
10.2.3 主機(jī)狀態(tài)監(jiān)控配置286
10.3 TCP/UDP主機(jī)狀態(tài)監(jiān)控287
10.3.1 模塊編譯287
10.3.2 模塊配置指令287
10.3.3 TCP/UDP主機(jī)狀態(tài)監(jiān)控配置290
10.4 監(jiān)控工具Prometheus291
10.4.1 Prometheus簡(jiǎn)介291
10.4.2 Prometheus部署292
10.4.3 監(jiān)控HTTP主機(jī)狀態(tài)296
10.4.4 監(jiān)控TCP/UDP主機(jī)狀態(tài)299
10.4.5 Prometheus監(jiān)控告警302
10.5 監(jiān)控工具Zabbix304
10.5.1 Zabbix簡(jiǎn)介305
10.5.2 Zabbix環(huán)境搭建306
10.5.3 Zabbix Agent安裝310
10.5.4 Zabbix獲取Prometheus數(shù)據(jù)311
第11章 Nginx集群負(fù)載與配置管理314
11.1 Nginx集群負(fù)載315
11.1.1 多層負(fù)載均衡架構(gòu)315
11.1.2 LVS簡(jiǎn)介315
11.1.3 Keepalived簡(jiǎn)介320
11.1.4 Nginx集群負(fù)載搭建327
11.2 Nginx集群配置管理331
11.2.1 Nginx集群配置管理規(guī)劃331
11.2.2 配置歸檔工具GitLab335
11.2.3 配置修改工具Ansible336
11.2.4 配置發(fā)布工具Jenkins338
11.2.5 Nginx配置管理實(shí)例340
第12章 Nginx在Kubernetes中的應(yīng)用351
12.1 Kubernetes簡(jiǎn)介352
12.1.1 Kubernetes架構(gòu)簡(jiǎn)述352
12.1.2 Kubernetes相關(guān)術(shù)語(yǔ)353
12.1.3 Kubernetes集群部署360
12.1.4 Kubernetes網(wǎng)絡(luò)通信366
12.2 Nginx Ingress375
12.2.1 Nginx Ingress原理375
12.2.2 集成的第三方模塊376
12.2.3 安裝部署378
12.2.4 日志管理383
12.2.5 監(jiān)控管理384
12.3 Nginx Ingress配置385
12.3.1 配置映射ConfigMap385
12.3.2 注解Annotations396
第13章 Nginx在微服務(wù)架構(gòu)中的應(yīng)用411
13.1 認(rèn)識(shí)微服務(wù)411
13.1.1 為什么需要微服務(wù)411
13.1.2 微服務(wù)的技術(shù)特點(diǎn)414
13.1.3 微服務(wù)的進(jìn)化416
13.2 基于Nginx的微服務(wù)網(wǎng)關(guān)418
13.2.1 Nginx產(chǎn)品組件419
13.2.2 開(kāi)源微服務(wù)網(wǎng)關(guān)Kong419
13.2.3 安裝部署423
13.2.4 微服務(wù)網(wǎng)關(guān)應(yīng)用427