Statistics
8
Views
0
Downloads
0
Donations
Support
Share
Uploader

高宏飞

Shared on 2026-03-20

Author王小东

这是一部基于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的部署与应用。

Tags
No tags
ISBN: 7111659929
Publisher: 机械工业出版社
Language: 中文
File Format: PDF
File Size: 9.6 MB
Support Statistics
¥.00 · 0times
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
Nginx应用与运维实战 王小东 著 ISBN:978-7-111-65992-1 本书纸版由机械工业出版社于2020年出版,电子版由 华章分社(北京华章图文信息有限公司,北京奥维博 世图书发行有限公司)全球范围内制作与发行。 版权所有,侵权必究 客服热线:+ 86-10-68995265 客服信箱:service@bbbvip.com 官方网址:www.hzmedia.com.cn 新浪微博 @华章数媒 微信公众号 华章电子书(微信号:hzebook)
前言 为什么写这本书 在互联网与我们生活已密不可分的今天,大规 模、高性能的网站架构技术已成为每个互联网技术人 员的必备技能。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作为微服务网关的应用配置方法。 勘误和支持 由于笔者的水平有限,书中难免存在不足或疏漏 之处,在此恳请读者朋友批评和指正。你可以将异议 发布到本书的支持网站http://www.nginxbar.org,笔
者将尽量在线上为你提供满意的答复。如果你有更多 的宝贵意见,也欢迎发送邮件至yfc@hzbook.com。非 常感谢你对本书的支持。 致谢 感谢Nginx的作者及其团队,他们提供了一个如此 优秀且应用广泛的开源项目,并使该项目一直处于活 跃开发状态,且不断创新,拥抱新技术,为我们持续 提供日益强大的互联网络通信协议解决方案。 感谢OpenResty的作者章亦春,他将Lua语言以模 块的方式嵌入Nginx中,极大地扩展了Nginx的可编程 性,降低了Nginx功能扩展的难度,给Nginx用户的日 常使用带来了极大的便利。 感谢网络中不吝分享知识的众多朋友,大家分享 的资料补充了笔者个人技术的短板,矫正了笔者诸多
细节上的不妥之处,给本书的写作带来了极大的帮 助。 感谢机械工业出版社华章公司的编辑杨福川,感 谢他在笔者创作本书过程中给予的指导和帮助。 感谢在工作和生活中给予笔者帮助的家人及朋 友,是你们的理解和支持让我能够完成本书的写作。 王小东 2020年8月
第1章 Nginx概述 Nginx(发音同“engine x”)是一个高性能的反 向代理和Web服务器软件,最初是由俄罗斯人Igor Sysoev开发的。Nginx的第一个版本发布于2004年,其 源代码基于双条款BSD许可证发布,因其系统资源消耗 低、运行稳定且具有高性能的并发处理能力等特性, Nginx在互联网企业中得到广泛应用。Nginx是互联网 上最受欢迎的开源Web服务器之一,它不仅提供了用于 开发和交付的一整套应用技术,还是应用交付领域的 开源领导者。Netcraft公司2019年7月的统计数据表 明,Nginx为全球最繁忙网站中的25.42%提供了服务或 代理,进一步扩大了其在主机域名领域的占有量,新 增5220万个站点,总数达4.4亿个,市场占有率已经超 过Apache 4.89%。得益于近几年云计算和微服务的快
速发展,Nginx因在其中发挥了自身优势而得到广泛应 用,且有望在未来占有更多的市场份额。 2019年3月,著名硬件负载均衡厂商F5宣布收购 Nginx,Nginx成为F5的一部分。F5表示,将加强对开 源和Nginx应用平台的投资,致力于Nginx开源技术、 开发人员和社区的发展,更大的投资将为开放源码计 划注入新的活力,会主办更多的开放源码活动,并产 生更多的开放源码内容。
1.1 Nginx的不同版本 作为最受欢迎的Web服务器之一,Nginx自2004年 发布以来已经得到很多互联网企业的应用。官方目前 有Nginx开源版和Nginx Plus商业版两个版本,开源版 是目前使用最多的版本,商业版除了包含开源版本的 全部功能外,还提供了一些独有的企业级功能。Nginx 在国内互联网企业中也得到了广泛应用,企业在实际 使用中会根据自身的需求进行相应的扩展和增强。目 前国内流行的Nginx主要有两个开源版本,分别是由淘 宝网技术团队维护的Tengine项目和由章亦春发起的 OpenResty项目。
1.1.1 开源版Nginx Nginx开源版一直处于活跃开发状态,由Nginx公 司负责开发与维护。截至本书写作时,Nginx开源版本 已经更新到1.17.2版本。Nginx自推出以来,一直专注 于低资源消耗、高稳定、高性能的并发处理能力,除 了提供Web服务器的功能外,还实现了访问代理、负载 均衡、内容缓存、访问安全及带宽控制等功能。其基 于模块化的代码架构及可与其他开发语言(如Perl、 JavaScript和Lua)有效集成的可编程特性,使其具有 强大的扩展能力。 部署和优化具有高效率、高性能并发请求处理能 力的应用架构是应用架构师一直追求的目标,在应用 架构技术的迭代中,各种分离式思想成为主流,比如 将访问入口和Web服务器分离、将Web服务器和动态脚