Nginx应用与运维实战
基本信息

编辑推荐
资深运维专家十余年运维经验总结
从应用、运维以及与Kubernetes和微服务集成3个维度全面讲解Nginx的基础知识、
工作原理、核心应用、运维管理、集成扩展
内容简介
计算机书籍
内容简介
这是一部基于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
前言
在互联网与我们生活已密不可分的今天,大规模、高性能的网站架构技术已成为每个互联网技术人员的必备技能。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个方面的配置指令和配置举例。
媒体评论
本书基于新版Nginx,从运维与开发工作的实际需要出发,首先介绍Nginx源码架构、编译及部署、核心配置指令、HTTP功能模块等基础知识;接着,重点讲解Nginx在Web服务、代理服务、缓存服务、负载均衡等方面的应用实战;然后,深入讲解Nginx日志管理、监控配置及管理、集群负载与配置管理等运维管理方法;最后,介绍Nginx在Kubernetes、微服务架构中的应用。书中详细解析了所涉及的专业术语和技术要点,并通过大量配置样例进行演示,力求让读者真正理解Nginx,用好 Nginx。
通过本书,你将:
熟练掌握Nginx的配置指令使用方法
了解Nginx作为Web服务的应用实现
了解Nginx对相关通信协议的处理方法
熟悉Nginx作为代理、缓存、负载均衡的应用实现
提升Nginx日常运维管理中的日志和监控管理能力
了解Nginx集群的搭建与配置管理方法
了解Nginx在Kubernetes和微服务架构中的应用实现
掌握软件的Docker化部署方法