内容简介
这是一部基于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的部署与应用。
封面图
目录
- 前言
- 第1章Nginx概述1
- 1.1Nginx的不同版本1
- 1.1.1开源版Nginx2
- 1.1.2商业版Nginx Plus3
- 1.1.3分支版本Tengine4
- 1.1.4扩展版本OpenResty4
- 1.2Nginx源码架构浅析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.2Linux内核参数15
- 2.2Nginx源码编译17
- 2.2.1Nginx源码获取17
- 2.2.2编译配置参数17
- 2.2.3代码编译20
- 2.2.4添加第三方模块21
- 2.3Tengine源码编译21
- 2.3.1Tengine源码获取21
- 2.3.2编译配置参数22
- 2.3.3代码编译22
- 2.3.4Tengine集成的模块22
- 2.4OpenResty源码编译24
- 2.4.1OpenResty源码获取24
- 2.4.2编译配置参数24
- 2.4.3代码编译25
- 2.4.4OpenResty集成的模块26
- 2.5Nginx部署28
- 2.5.1环境配置28
- 2.5.2命令行参数28
- 2.5.3注册系统服务29
- 2.6Nginx的Docker容器化部署30
- 2.6.1Docker简介30
- 2.6.2Docker环境安装31
- 2.6.3Dockerfile常用命令及编写31
- 2.6.4Nginx Docker运行33
- 第3章Nginx核心配置指令35
- 3.1Nginx配置文件解析35
- 3.1.1配置文件目录36
- 3.1.2配置文件结构36
- 3.1.3配置文件中的计量单位38
- 3.1.4配置文件中的哈希表39
- 3.2Nginx的进程核心配置指令39
- 3.2.1进程管理39
- 3.2.2进程调优40
- 3.2.3进程调试44
- 3.2.4事件处理45
- 3.2.5核心指令配置样例48
- 3.3HTTP核心配置指令48
- 3.3.1初始化服务49
- 3.3.2HTTP请求处理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.9HTTP核心配置样例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.2referer请求头控制模块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.5gzip压缩126
- 第5章Nginx Web服务应用实战130
- 5.1静态文件服务器的搭建130
- 5.1.1静态Web服务器130
- 5.1.2文件下载服务器131
- 5.1.3伪动态SSI服务器132
- 5.2HTTPS安全服务器的搭建137
- 5.2.1配置指令137
- 5.2.2HTTPS基本配置139
- 5.2.3HTTPS密钥交换算法141
- 5.2.4HTTPS会话缓存142
- 5.2.5HTTPS双向认证配置143
- 5.2.6HTTPS吊销证书配置144
- 5.2.7HTTPS配置样例145
- 5.3PHP网站搭建146
- 5.3.1FastCGI模块指令146
- 5.3.2PHP环境安装150
- 5.3.3PHP网站配置样例151
- 5.3.4FastCGI集群负载及缓存152
- 5.4Python网站的搭建154
- 5.4.1CGI、FastCGI、SCGI、WSGI154
- 5.4.2uWSGI模块指令155
- 5.4.3Python网站的搭建159
- 5.5XSLT转换服务器162
- 5.5.1模块配置指令162
- 5.5.2XSLT服务器配置样例162
- 5.6伪流媒体服务器的搭建164
- 5.6.1模块配置指令165
- 5.6.2伪流媒体配置样例165
- 5.7HTTP增强协议服务器的搭建168
- 5.7.1HTTP/2协议服务168
- 5.7.2WebDAV协议服务169
- 第6章Nginx代理服务应用实战173
- 6.1HTTP代理173
- 6.1.1模块指令173
- 6.1.2正向代理177
- 6.1.3HTTP的反向代理179
- 6.1.4HTTPS的反向代理181
- 6.1.5反向代理的真实客户端IP184
- 6.2TCP/UDP代理185
- 6.2.1stream核心模块185
- 6.2.2stream辅助模块187
- 6.2.3TCP/UDP代理194
- 6.2.4基于SSL的TCP代理197
- 6.2.5TCP/UDP代理的真实客户端IP199
- 6.3gRPC代理202
- 6.3.1gRPC介绍202
- 6.3.2gRPC模块指令202
- 6.3.3gRPC反向代理配置204
- 第7章Nginx缓存服务应用实战206
- 7.1Web缓存206
- 7.1.1客户端缓存207
- 7.1.2正向代理缓存211
- 7.1.3内容分发网络211
- 7.1.4反向代理缓存212
- 7.2Nginx缓存模块213
- 7.2.1代理缓存模块213
- 7.2.2Memcached缓存模块218
- 7.3Nginx缓存应用219
- 7.3.1代理缓存服务器219
- 7.3.2镜像缓存应用221
- 7.3.3Memcached缓存应用223
- 7.3.4客户端缓存控制226
- 7.4缓存服务的管理与维护227
- 7.4.1模块编译228
- 7.4.2模块指令228
- 第8章Nginx负载均衡应用实战231
- 8.1Nginx负载均衡模块231
- 8.1.1服务器配置指令232
- 8.1.2负载均衡策略指令234
- 8.2负载均衡策略236
- 8.2.1轮询236
- 8.2.2一致性哈希237
- 8.2.3IP哈希239
- 8.2.4最少连接240
- 8.2.5随机负载算法241
- 8.3负载均衡配置242
- 8.3.1负载均衡的长连接242
- 8.3.2upstream的容错机制245
- 8.3.3动态更新upstream248
- 8.3.4HTTP负载均衡配置253
- 8.3.5FastCGI负载均衡配置253
- 8.3.6uWSGI负载均衡配置254
- 8.3.7gRPC负载均衡配置254
- 8.3.8Memcached负载均衡配置255
- 8.4TCP/UDP负载均衡255
- 8.4.1TCP/UDP负载均衡255
- 8.4.2TCP/UDP负载均衡的容错机制257
- 第9章Nginx日志管理259
- 9.1Nginx日志配置259
- 9.1.1访问日志259
- 9.1.2错误日志263
- 9.1.3日志归档Logrotate264
- 9.1.4日志输出到syslog268
- 9.2Nginx日志收集分析269
- 9.2.1ELK简介269
- 9.2.2ELK安装271
- 9.2.3Nginx日志分析276
- 第10章Nginx监控配置及管理278
- 10.1Nginx连接状态监控278
- 10.1.1Nginx连接状态278
- 10.1.2Nginx连接状态模块指令280
- 10.1.3基于Zabbix的连接状态监控280
- 10.2HTTP主机状态监控282
- 10.2.1模块编译282
- 10.2.2模块配置指令282
- 10.2.3主机状态监控配置286
- 10.3TCP/UDP主机状态监控287
- 10.3.1模块编译287
- 10.3.2模块配置指令287
- 10.3.3TCP/UDP主机状态监控配置290
- 10.4监控工具Prometheus291
- 10.4.1Prometheus简介291
- 10.4.2Prometheus部署292
- 10.4.3监控HTTP主机状态296
- 10.4.4监控TCP/UDP主机状态299
- 10.4.5Prometheus监控告警302
- 10.5监控工具Zabbix304
- 10.5.1Zabbix简介305
- 10.5.2Zabbix环境搭建306
- 10.5.3Zabbix Agent安装310
- 10.5.4Zabbix获取Prometheus数据311
- 第11章Nginx集群负载与配置管理314
- 11.1Nginx集群负载315
- 11.1.1多层负载均衡架构315
- 11.1.2LVS简介315
- 11.1.3Keepalived简介320
- 11.1.4Nginx集群负载搭建327
- 11.2Nginx集群配置管理331
- 11.2.1Nginx集群配置管理规划331
- 11.2.2配置归档工具GitLab335
- 11.2.3配置修改工具Ansible336
- 11.2.4配置发布工具Jenkins338
- 11.2.5Nginx配置管理实例340
- 第12章Nginx在Kubernetes中的应用351
- 12.1Kubernetes简介352
- 12.1.1Kubernetes架构简述352
- 12.1.2Kubernetes相关术语353
- 12.1.3Kubernetes集群部署360
- 12.1.4Kubernetes网络通信366
- 12.2Nginx Ingress375
- 12.2.1Nginx Ingress原理375
- 12.2.2集成的第三方模块376
- 12.2.3安装部署378
- 12.2.4日志管理383
- 12.2.5监控管理384
- 12.3Nginx 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.1Nginx产品组件419
- 13.2.2开源微服务网关Kong419
- 13.2.3安装部署423
- 13.2.4微服务网关应用427