Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影。它天生就适合在 Linux 服务器上处理百万、千万级的并发连接,实现高吞吐量的 WEB 服务。
如果你想让自己的产品在支持高并发请求的同时保持高效的服务,Nginx 可能是最好的选择。
另外,经过多年的发展,诸如 OpenResty 这样的第三方模块群进一步赋能 Nginx,使 Nginx 的应用进一步向应用防火墙、CDN 等领域扩展,甚至渗透到 LVS 的领域与 F5 这样的硬件产品竞争。
可以说,技术人员掌握 Nginx,便掌握了应对高并发以及海量数据处理的利器。而且,在学习 Nginx 的过程中,还能学习到许多优秀的设计思想,进一步提升我们的编码能力和架构设计能力,从而大大拓展我们的职业道路。
但大多数人使用 Nginx 都停留在这几个级别:
第一种:使用 Nginx 配置最简单的反向代理服务或者静态资源服务,当扩展功能时发现新增的指令 Nginx 不支持,但又不懂如何增加 Nginx 模块,如何分析 access 日志。
第二种:可以根据源码定制安装 Nginx,对网上流传的大众配置做一些个性化的修改,但遇到修改 proxy_pass 后的 URL 上游服务不正常等问题时就束手无策,不清楚 Nginx 各个目录的意义,也不清楚 Nginx 的进程结构。
第三种:能够顺畅地使用 Nginx 的常用功能,但不清楚第三方模块发生冲突时的解决方案、stale 过期缓存的用法、 Nginx 诸多变量是如何被赋值的、听说 if 指令是邪恶的却不知道它的设计理念及正确用法等等。
第四种:可以正确地使用 Nginx 的功能及第三方模块,并按照网络上常见的优化参数优化性能,但对如何系统化地优化性能没有头绪,对于 Nginx、Linux 提供的内存缓冲区、网络类等诸多指令和参数的优化没有头绪。
第五种:可以熟练使用 Nginx,但对 OpenResty 的 Lua 模块如何与 Nginx 结合使用以及对 Nginx 性能影响不太清楚,对 Nginx 源码的理解没有达到由点到面的程度。
基于以上分类,我制定了一份 Nginx 学习知识图谱。你完全可以对比这张学习图谱,进行查漏补缺,做深入的针对性学习。
进阶 Nginx 高手,你必须跨越的 5 座大山
1、深入理解 Nginx 架构
了解事件驱动机制是深入优化 Nginx 性能、判定第三方模块性能的基础。而了解 Nginx 的进程结构,则是我们对 Nginx 做日常维护的必要条件,也是我们优化 Nginx 性能的理论基础。另外,变量是 Nginx 实现模块间解耦合的关键。这些知识都需要我们牢固掌握,为后面的进阶学习打下坚实基础。
2、对 HTTP 模块要了如指掌
HTTP 请求处理过程中分为 11 个阶段。理解每个 HTTP 模块所处的阶段,并清楚该模块在这一阶段中的位置顺序,有助于我们定位指令不生效或者与预期功能不符等问题,提高定位各种 Bug 的效率,也可以帮我们熟悉缺乏文档的第三方模块。
3、反向代理与负载均衡
反向代理有一套通用的处理流程,掌握反向代理处理请求的完整流程,能让我们熟练使用 HTTP 协议反向代理,以及熟悉如 memcached、gRPC 等同类的反向代理,在优化性能时,也能对相关缓存、超时等指令更有针对性的做个性化配置。
4、性能优化
内存优化有助于我们降低处理每个请求消耗的内存,进而可以提升并发量,同时,加速内存的分配速度也有助于提升吞吐量。当需要 Nginx 应对数十万甚至更多 QPS 时,通过优化传输层协议栈参数能提升系统并发能力、吞吐量,也是必须经历的步骤。另外,磁盘 IO 往往是拖慢 Nginx 性能的重要因素。这些都是性能优化的关键所在,需要我们深入进行学习。
5、熟练掌握 OpenResty
在 Lua 代码中可以调用 Nginx 的特性,调用部分 Nginx 模块提供的功能,尤其可以与 Nginx 中的变量交互,这是 OpenResty 实现强大功能的前提。学会 OpenResty 后,我们就可以让 Nginx 成为功能更强大的 API 服务,尽一步提升系统的吞吐量和并发能力。
总结
我已经帮你基本上梳理了“学好 Nginx 需要的 5 大模块内容”及“细化的知识点”,你只要跟着以上内容好好梳理自己的学习计划,跨过这 5 座大山,必定可以进阶!
总而言之,要成为 Nginx 高手,你必须彻底明确 Nginx 的能力模型,了解 Nginx 的工作原理,清楚怎样使用 Nginx 搭建出定制化的 Web 服务器或者微服务集群的负载均衡服务,并理解什么样的 API 服务适合用 Nginx 编写,同时清楚如何在 linux 操作系统上优化 Nginx,使 Nginx 可以轻松应付百万并发连接。
限时福利:
1、《Nginx核心知识100讲》正在限时拼团,原价¥129,拼团价¥99/2 人成团,也有几个试看视频,欢迎观看。
2、凭借购买截图,还可获得“极客时间最新知识图谱”,加专栏运营 Monica 微信:imonica1010
评论 3 条评论