书籍作者:王小东 | ISBN:9787111659921 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2786 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
这是一部基于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)作者是资深运维专家,在国内知名互联网公司有十余年运维和架构经验。
(2)从应用、运维及与Kubernetes和微服务集成3维度讲解Nginx基础知识、工作原理、核心应用、运维管理、集成扩展
(3)以实战为导向,包含大量配置案例和示例代码。
(4)基于Nginx新版本和云原生应用场景。
通过阅读本书,你将:
●熟练掌握Nginx的配置指令使用方法
●了解Nginx作为Web服务的应用实现
●了解Nginx对相关通信协议的处理方法
●熟悉Nginx作为代理、缓存、负载均衡的应用实现
●提升Nginx日常运维管理中的日志和监控管理能力
●了解Nginx集群的搭建与配置管理方法
●了解Nginx在Kubernetes和微服务架构中的应用实现
●掌握软件的Docker化部署方法
【为什么写这本书】
在互联网与我们生活已密不可分的今天,大规模、高性能的网站架构技术已成为每个互联网技术人员的必备技能。Nginx作为一款开源的Web服务器软件,因其具有性能稳定、高并发、低内存耗用、高性能的处理能力等特点,而被广泛应用到国内外各互联网厂商的实际生产架构中。由于互联网技术迭代非常快,云计算、微服务等新技术层出不穷,Nginx也一直处于活跃开发的状态,并在新版本中增加了很多强大的功能,与这些新技术紧密集成。同时基于其开源版本衍生出来的OpenResty和淘宝的Tengine等软件也根据自身需求提供了优秀的扩展功能,满足了云计算、微服务等各种技术的应用需求,并在实际生产环境中得到了广泛应用。
作为一款Web服务器软件,Nginx实现了Web服务器的基本功能,用户通过简单的配置指令就可以快速完成Web服务器的搭建。它还是网络通信协议处理软件,支持TCP/UDP、HTTP、HTTP/2、gRPC、FastCGI、SCGI、uWSGI、WebDAV等协议的处理,并实现了相应通信协议的请求解析、长连接、代理转发、负载均衡、会话保持等互联网架构中常见的应用功能。同时,它还是一款高并发服务软件,其采用的固定数量的多进程模型、事件驱动处理机制、工作流处理方式及模块化架构等软件开发设计,已成为高并发服务软件开发的典范。
Nginx自诞生至今已有十几年时间,虽然相关资料很多,但国内可获得的资料很多是直接翻译自官方文档,这些资料让读者只是停留在知其然而不知其所以然的层面,即便有深入讲解某一功能的资料,也仅能让读者管中窥豹,而无法全面了解Nginx的功能并在实际工作中熟练应用。市面上的图书或偏重于Nginx服务器的搭建,或偏重于Nginx的源码解析,同时Nginx的新版本及云计算、微服务等新技术迭代较快,这就导致市面上介绍Nginx最新技术实际应用及运维管理的资料稀少。而Nginx的用户只有理解了Nginx的各项指令参数的功用,才能熟练对Nginx的各种功能进行灵活组合,以使其发挥最高的性能,进而在实际工作中解决各种问题。鉴于以上原因,本书分别从Nginx介绍、应用实战、运维管理及与Kubernetes和微服务的应用集成4个部分来介绍Nginx的特点及运维管理实战经验,力求给从事互联网技术工作的读者带来帮助。
【读者对象】
本书的目标群体为具有一定Linux基础的互联网行业运维工程师、系统架构师。因为Nginx可应用于Web服务、负载均衡、微服务等多个方面,所以本书也可作为开发工程师及软件架构师的日常工作参考书。
【本书特色】
本书对开源版Nginx自有的配置指令进行了全面介绍和配置举例,同时力求对涉及的技术术语及其原理进行阐述,使读者可以深刻理解和掌握Nginx配置指令的配置方法。Nginx是一款网络通信协议处理软件,涉及大量网络通信协议的处理方法,对于本书中每个涉及网络通信协议的配置,笔者都对相关技术特点进行了介绍,使读者可以结合配置案例掌握Nginx在不同应用场景下的使用方法。全书所涉及的软件部署均采用了Docker化的部署方法,不仅充分利用了Docker容器的便捷部署方式,还满足了目前容器化运维管理工作的技术需求。
Nginx现仍处于活跃开发中,本书基于Nginx最新版本及官方资料撰写,对Nginx开源版本最新功能进行了完整介绍,还介绍了Nginx与目前比较流行的Kubernetes和微服务架构应用的集成。
【如何阅读本书】
Nginx是一款非常优秀的开源软件,笔者主要基于自身实际使用Nginx的经验来分享Nginx的应用和运维方法。本书在逻辑上可分为4个部分,分别为Nginx介绍、应用实战、运维管理,以及Nginx与Kubernetes、微服务的应用集成。
★第一部分 Nginx介绍(第1~4章)
●第1章 Nginx概述
Nginx的第一个版本发布于2004年,经过多年的发展,逐渐演变出Nginx、Nginx Plus、Tengine、OpenResty这4个被广泛应用的版本。本章分别介绍了这4个版本各自的特点,并通过对开源Nginx架构的特点及实现原理的介绍,使读者对Nginx的功能有初步的了解。
●第2章 Nginx编译及部署
Nginx是用C语言开发的,需要通过对源代码进行编译才能获得可运行的二进制文件。本章介绍了Nginx开源版本的编译配置参数及Tengine、OpenResty两个版本的扩展编译配置参数和所集成的模块,同时介绍了各个开源版本的编译和基于Docker的编译部署方法。
●第3章 Nginx核心配置指令
Nginx的配置是通过在配置文件中调整不同配置指令的指令值实现的。本章介绍了Nginx配置文件的目录结构及主配置文件nginx.conf的文件结构,并对Nginx的进程及HTTP核心配置的配置指令进行了介绍和配置举例。
●第4章 Nginx HTTP模块详解
Nginx 的HTTP模块配置指令主要负责HTTP请求处理的配置。本章介绍了Nginx在动态赋值、访问控制、数据处理这3个方面的配置指令和配置举例。
★第二部分 应用实战(第5~8章)
●第5章 Nginx Web服务应用实战
Nginx 的一个基本功能是作为Web服务器提供HTTP服务,它支持对静态页面、动态脚本页面、多媒体等文件的响应和处理。本章通过静态文件服务器、HTTPS安全服务器、PHP网站搭建、Python网站搭建等实战案例,介绍了Nginx作为Web服务的应用实战。
●第6章 Nginx 代理服务应用实战
Nginx支持HTTP、TCP、gRPC等多种协议的代理,通过上述代理功能,后端服务器可实现更灵活安全的部署。本章通过实战案例介绍了Nginx代理相关配置指令的使用方法及需要关注的客户端源IP问题的解决方案。
●第7章 Nginx缓存服务应用实战
内容缓存是加速用户访问的常用技术。本章介绍了Nginx缓存模块的配置指令,并通过客户端缓存、代理缓存、镜像缓存及Memcached集成等应用场景配置案例,介绍了Nginx作为缓存服务器的应用实战。
●第8章 Nginx负载均衡应用实战
Nginx通过上游模块与代理模块共同实现了对后端服务器的访问负载功能,Nginx支持HTTP、TCP/UDP、gRPC、FastCGI、uWSGI、SCGI、Memcached等协议的反向代理。本章详细介绍了Nginx负载均衡相关的配置指令和官方自带的负载均衡算法及实现原理。
★第三部分 运维管理(第9~11章)
●第9章 Nginx日志管理
Nginx的日志分为访问日志和错误日志两种。日志的收集和分析是日常运维工作的重要内容,日志不仅可以帮助运维工程师排查Nginx的问题及优化Nginx的性能,还可以通过与ELK集成为其代理的网站应用提供安全、性能、可用性及运行的PV/UV等方面的数据,通过对这些数据进行不同维度的分析,可以了解如何提升网站应用的运维能力。
●第10章 Nginx 监控配置及管理
在Nginx的日常运维管理工作中,Nginx的监控管理是一项重要的工作,但开源版本Nginx自带的监控数据采集能力相对较弱。本章介绍了开源Nginx与第三方模块集成的方法,这些方法增强了Nginx的监控数据采集能力。本章还介绍了目前流行的监控工具Prometheus对Nginx服务器的监控、告警方法。另外还举例介绍了监控工具Zabbix获取Prometheus Exporter数据,以便在运维管理工作中实现统一化监控管理的方法。
●第11章 Nginx集群负载与配置管理
高业务量的互联网应用架构中,通常都是通过多组Nginx集群实现后端不同应用服务集群负载均衡的,本章介绍了基于Keepalived的Nginx集群的多层负载架构搭建,并举例介绍了通过现有的开源软件Jenkins、GitLab和Ansible组合,快速搭建一套Web化的Nginx集群配置管理框架的方法。
★第四部分 Nginx与Kubernetes、微服务的应用集成(第12~13章)
●第12章 Nginx 在Kubernetes中的应用
Kubernetes是Google开源的分布式容器管理系统,它实现了对容器的部署、网络管理、负载调度、节点集群和资源的扩缩容等自动化管理功能。在该服务对外发布的方案中,Nginx 以 Nginx Ingress组件的方式为Kubernetes集群的Pod应用提供了访问控制、认证管理、应用层代理、负载均衡等功能,使Kubernetes对集群中运行于容器的应用程序具有更灵活的应用层,以提供对外访问的管理能力。本章介绍了Kubernetes的相关术语及网络通信机制,读者可通过相关网络通信机制根据实际需求选择Nginx Ingress的部署方式,并通过本章介绍的配置映射和注解这两种不同的配置方式实现日常Nginx Ingress的配置管理工作。
●第13章 Nginx在微服务架构中的应用
近几年,微服务架构技术发展迅猛,已成为目前主流的应用架构技术。在微服务架构中,Nginx也在微服务网关等微服务的核心组件中发挥着重要的作用。本章从软件发展历史的角度介绍了对微服务架构的认识,并举例介绍了基于OpenResty的开源微服务网关软件Kong作为微服务网关的应用配置方法。
●第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
还没开始看
2020-08-30 14:49:29
很好很满意
2020-08-30 00:01:45
很好很满意
2020-08-29 21:39:47
很好很满意
2020-08-29 21:44:58
有很多干货,值得一读
2020-08-15 19:04:26