Nginx 應用與運維實戰

王小東

  • 出版商: 機械工業
  • 出版日期: 2020-08-01
  • 定價: $654
  • 售價: 8.5$556
  • 語言: 簡體中文
  • 頁數: 431
  • 裝訂: 平裝
  • ISBN: 7111659929
  • ISBN-13: 9787111659921
  • 相關分類: Kubernetes網站伺服器 Web-server
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

這是一部基於Nginx新版本和雲原生應用場景系統講解Nginx的著作,是作者十餘年運維經驗的總結。
本書從應用、運維以及與Kubernetes和微服務集成3個維度對Nginx的基礎知識、工作原理、核心應用、運維管理、集成擴展等重點內容進行了全面、細緻的講解。
完全以實戰為導向,包含大量的配置案例和示例代碼,能幫助讀者快速掌握並在實際工作中熟練應用Nginx。
本書共13章,分為4個部分。
第一部分:Nginx介紹(第1~4章) 首先,簡要分析了Nginx的架構特點及實現原理;
其次,講解了Nginx及其衍生版本Tengine、OpenResty的編譯與部署;
接著,全面介紹了Nginx的核心配置指令;最後,講解了動態賦值、
訪問控制和數據處理這3個Nginx的HTTP功能模塊配置指令。
第二部分:應用實戰(第5~8章) 分別介紹Nginx 在Web服務、代理服務、
緩存服務和負載均衡等方面的應用實戰,對於所涉及的每個模塊,
不僅詳細分析了相關的技術特點,還給出了具體的配置指令和配置樣例。
第三部分:運維管理(第9~11章) 首先介紹Nginx的日誌配置及基於ELK的日誌分析,
其次講解Nginx的狀態監控配置,以及如何利用監控工具Prometheus、Zabbix實現對Nginx的監控管理;
最後介紹如何基於LVS、Keepalived搭建Nginx集群負載均衡架構,
以及如何結合Jenkins、GitLab和Ansible快速搭建Web化的Nginx集群配置管理框架。
第四部分:Nginx與Kubernetes和微服務的應用集成(第12、13章)
 分別介紹Nginx在Kubernetes、微服務架構中的應用,包括在Kubernetes中Nginx Ingress的部署、
管理與配置,以及基於OpenResty的開源微服務網關軟件Kong的部署與應用。

作者簡介

王小東

資深運維專家,有十餘年的互聯網企業運維和架構經驗,擅長服務器優化、
大規模集群管理、開源工具應用和業務故障處理等。
曾就職於大眾點評等知名互聯網公司,EXIN 認證DevOps Master,
專注於運維架構優化、自動化運維以及運維工作的DevOps治理,
熱衷於各種開源技術的應用實踐與創新。

目錄大綱

●第1章Nginx概述1
1.1 Nginx的不同版本1
1.1.1 開源版Nginx2
1.1.2 商業版Nginx Plus3
1.1.3 分支版本Tengine4
1.1.4 擴展版本OpenResty4
1.2 Nginx源碼架構淺析5
1.2.1 多進程模型6
1.2.2 工作流機制9
1.2.3 模塊化12

●第2章Nginx編譯及部署14
2.1 編譯環境準備14
2.1.1 操作系統的準備14
2.1.2 Linux內核參數15
2.2 Nginx源碼編譯17
2.2.1 Nginx源碼獲取17
2.2.2 編譯配置參數17
2.2.3 代碼編譯20
2.2.4 添加第三方模塊21
2.3 Tengine源碼編譯21
2.3.1 Tengine源碼獲取21
2.3.2 編譯配置參數22
2.3.3 代碼編譯22
2.3.4 Tengine集成的模塊22
2.4 OpenResty源碼編譯24
2.4.1 OpenResty源碼獲取24
2.4.2 編譯配置參數24
2.4.3 代碼編譯25
2.4.4 OpenResty集成的模塊26
2.5 Nginx部署28
2.5.1 環境配置28
2.5.2 命令行參數28
2.5.3 註冊系統服務29
2.6 Nginx的Docker容器化部署30
2.6.1 Docker簡介30
2.6.2 Docker環境安裝31
2.6.3 Dockerfile常用命令及編寫31
2.6.4 Nginx Docker運行33

●第3章Nginx核心配置指令35
3.1 Nginx配置文件解析35
3.1.1 配置文件目錄36
3.1.2 配置文件結構36
3.1.3 配置文件中的計量單位38
3.1.4 配置文件中的哈希表39
3.2 Nginx的進程核心配置指令39
3.2.1 進程管理39
3.2.2 進程調優40
3.2.3 進程調試44
3.2.4 事件處理45
3.2.5 核心指令配置樣例48
3.3 HTTP核心配置指令48
3.3.1 初始化服務49
3.3.2 HTTP請求處理55
3.3.3 訪問路由location65
3.3.4 訪問重寫rewrite69
3.3.5 訪問控制73
3.3.6 數據處理76
3.3.7 關閉連接85
3.3.8 日誌​​記錄87
3.3.9 HTTP核心配置樣例87

●第4章Nginx HTTP模塊詳解91
4.1 動態賦值功能模塊91
4.1.1 根據瀏覽器動態賦值92
4.1.2 根據IP動態賦值94
4.1.3 根據IP動態獲取城市信息95
4.1.4 比例分配賦值98
4.1.5 變量映射賦值98
4.2 訪問控制功能模塊101
4.2.1 訪問鏡像模塊101
4.2.2 referer請求頭控制模塊102
4.2.3 連接校驗模塊104
4.2.4 源IP訪問控制模塊105
4.2.5 基本認證模塊106
4.2.6 認證轉發模塊107
4.2.7 用戶cookie模塊109
4.2.8 並發連接數限制模塊112
4.2.9 請求頻率限制模塊114
4.3 數據處理功能模塊116
4.3.1 首頁處理116
4.3.2 圖片處理118
4.3.3 響應處理121
4.3.4 數據修改124
4.3.5 gzip壓縮126

●第5章Nginx Web服務應用實戰130
5.1 靜態文件服務器的搭建130
5.1.1 靜態Web服務器130
5.1.2 文件下載服務器131
5.1.3 偽動態SSI服務器132
5.2 HTTPS安全服務器的搭建137
5.2.1 配置指令137
5.2.2 HTTPS基本配置139
5.2.3 HTTPS密鑰交換算法141
5.2.4 HTTPS會話緩存142
5.2.5 HTTPS雙向認證配置143
5.2.6 HTTPS吊銷證書配置144
5.2.7 HTTPS配置樣例145
5.3 PHP網站搭建146
5.3.1 FastCGI模塊指令146
5.3.2 PHP環境安裝150
5.3.3 PHP網站配置樣例151
5.3.4 FastCGI集群負載及緩存152
5.4 Python網站的搭建154
5.4.1 CGI、FastCGI、SCGI、WSGI154
5.4.2 uWSGI模塊指令155
5.4.3 Python網站的搭建159
5.5 XSLT轉換服務器162
5.5.1 模塊配置指令162
5.5.2 XSLT服務器配置樣例162
5.6 偽流媒體服務器的搭建164
5.6.1 模塊配置指令165
5.6.2 偽流媒體配置樣例165
5.7 HTTP增強協議服務器的搭建168
5.7.1 HTTP/2協議服務168
5.7.2 WebDAV協議服務169

●第6章Nginx代理服務應用實戰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 反向代理的真實客戶端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代理的真實客戶端IP199
6.3 gRPC代理202
6.3.1 gRPC介紹202
6.3.2 gRPC模塊指令202
6.3.3 gRPC反向代理配置204

●第7章Nginx緩存服務應用實戰206
7.1 Web緩存206
7.1.1 客戶端緩存207
7.1.2 正向代理緩存211
7.1.3 內容分發網絡211
7.1.4 反向代理緩存212
7.2 Nginx緩存模塊213
7.2.1 代理緩存模塊213
7.2.2 Memcached緩存模塊218
7.3 Nginx緩存應用219
7.3.1 代理緩存服務器219
7.3.2 鏡像緩存應用221
7.3.3 Memcached緩存應用223
7.3.4 客戶端緩存控制226
7.4 緩存服務的管理與維護227
7.4.1 模塊編譯228
7.4.2 模塊指令228

●第8章Nginx負載均衡應用實戰231
8.1 Nginx負載均衡模塊231
8.1.1 服務器配置指令232
8.1.2 負載均衡策略指令234
8.2 負載均衡策略236
8.2.1 輪詢236
8.2.2 一致性哈希237
8.2.3 IP哈希239
8.2.4 最少連接240
8.2.5 隨機負載算法241
8.3 負載均衡配置242
8.3.1 負載均衡的長連接242
8.3.2 upstream的容錯機制245
8.3.3 動態更新upstream248
8.3.4 HTTP負載均衡配置253
8.3.5 FastCGI負載均衡配置253
8.3.6 uWSGI負載均衡配置254
8.3.7 gRPC負載均衡配置254
8.3.8 Memcached負載均衡配置255
8.4 TCP/UDP負載均衡255
8.4.1 TCP/UDP負載均衡255
8.4.2 TCP/UDP負載均衡的容錯機制257

●第9章Nginx日誌管理259
9.1 Nginx日誌配置259
9.1.1 訪問日誌259
9.1.2 錯誤日誌263
9.1.3 日誌歸檔Logrotate264
9.1.4 日誌輸出到syslog268
9.2 Nginx日誌收集分析269
9.2.1 ELK簡介269
9.2.2 ELK安裝271
9.2.3 Nginx日誌分析276

●第10章Nginx監控配置及管理278
10.1 Nginx連接狀態監控278
10.1.1 Nginx連接狀態278
10.1.2 Nginx連接狀態模塊指令280
10.1.3 基於Zabbix的連接狀態監控280
10.2 HTTP主機狀態監控282
10.2.1 模塊編譯282
10.2.2 模塊配置指令282
10.2.3 主機狀態監控配置286
10.3 TCP/UDP主機狀態監控287
10.3.1 模塊編譯287
10.3.2 模塊配置指令287
10.3.3 TCP/UDP主機狀態監控配置290
10.4 監控工具Prometheus291
10.4.1 Prometheus簡介291
10.4.2 Prometheus部署292
10.4.3 監控HTTP主機狀態296
10.4.4 監控TCP/UDP主機狀態299
10.4.5 Prometheus監控告警302
10.5 監控工具Zabbix304
10.5.1 Zabbix簡介305
10.5.2 Zabbix環境搭建306
10.5.3 Zabbix Agent安裝310
10.5.4 Zabbix獲取Prometheus數據311

●第11章Nginx集群負載與配置管理314
11.1 Nginx集群負載315
11.1.1 多層負載均衡架構315
11.1.2 LVS簡介315
11.1.3 Keepalived簡介320
11.1.4 Nginx集群負載搭建327
11.2 Nginx集群配置管理331
11.2.1 Nginx集群配置管理規劃331
11.2.2 配置歸檔工具GitLab335
11.2.3 配置修改工具Ansible336
11.2.4 配置發布工具Jenkins338
11.2.5 Nginx配置管理實例340

●第12章Nginx在Kubernetes中的應用351
12.1 Kubernetes簡介352
12.1.1 Kubernetes架構簡述352
12.1.2 Kubernetes相關術語353
12.1.3 Kubernetes集群部署360
12.1.4 Kubernetes網絡通信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 監控管理384
12.3 Nginx Ingress配置385
12.3.1 配置映射ConfigMap385
12.3.2 註解Annotations396

●第13章Nginx在微服務架構中的應用411
13.1 認識微服務411
13.1.1 為什麼需要微服務411
13.1.2 微服務的技術特點414
13.1.3 微服務的進化416
13.2 基於Nginx的微服務網關418
13.2.1 Nginx產品組件419
13.2.2 開源微服務網關Kong419
13.2.3 安裝部署423
13.2.4 微服務網關應用427