下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者

如何用 Nginx 实现反向代理与负载均衡?

2019-04-19 陶辉
为什么需要反向代理呢?
因为单台应用服务处理动态请求的能力很有限,而反向代理可以将多台上游服务组成分布式集群,以一个公网 IP 对外提供服务,使我们的服务有了强大的数据处理能力,且反向代理服务处理网络报文的效率更高,消耗 CPU 较多的 TLS/SSL 加密报文也在这里被拆解为简单高效的应用层协议;
第二点,反向代理位置更接近用户,所以在这里加入公有缓存收益更大,客户端命中缓存后网络链路更短,也进一步减轻了上游应用的压力,尤其在上游服务出错时,还能通过过期缓存为用户提供柔性服务;
而且反向代理的负载均衡功能还能通过提供容灾、扩容、灰度发布等能力,使集群拥有高可扩展性,使我们服务可以拥有多个 9 的可用性。
那为什么要用 Nginx 来做反向代理与负载均衡?
首先因为它支持 HTTP、CGI、uwsgi、websocket、gRPC 等多种应用层协议,且为应用层反向代理提供了功能强大的缓存服务,为应用服务增强可用性的同时又提供了大量的可定制性。
其次,Nginx 也支持功能丰富的 TCP/UDP 等传输层反向代理,Nginx 对上下游都支持 TLS/SSL 协议,也有多种传递真实 IP 地址的方案。
对于负载均衡模块,由 init_upstream 接口为第三方模块提供了选择路由的能力,如 OpenResty 的 balance_by_lua 指令也因而生效,因此 Nginx 既拥有成熟的负载均衡方案,也可以方便地定制独有的负载均衡算法。
具体用 Nginx 怎么来实现,请看下面视频讲解:
00:00 / 00:00
扩展阅读:

课程介绍

Nginx 很火,因为它就像一个万能药,在任何存在性能需求的场合总能找见它的身影。它可以轻松在百万并发连接下实现高吞吐量的 Web 服务,同时诸多应用场景下的问题都可以通过种种 Nginx 模块得以解决。
技术人员掌握 Nginx,便掌握了应对高并发以及海量数据处理的利器。而且,在学习 Nginx 的过程中,还能学习到许多优秀的设计思想,进一步提升我们的编码能力和架构设计能力,从而大大拓展我们的职业道路。
陶辉在极客时间开设的这门课程《Nginx 核心知识 100 讲》,备受好评。由于他有着多年 Nginx 的定制化应用经验,对 Nginx 的设计与特性有深刻认识,还是《深入理解 Nginx:模块开发与架构解析》一书的作者,跟着他学 Nginx,必定让你少走弯路。
他可以帮你把关于 Nginx 的零零散散的知识点串成一条线,再将网络、操作系统、磁盘等知识与 Nginx 相关知识组成一个知识网,从而在工作中灵活运用这些知识和技能,通过 Nginx 最大化地利用好服务器的性能,搭建出更稳定的服务。

你将获得

1、基础知识详解及核心架构剖析
2、搭建支持百万高并发的 Nginx 服务
3、从内核优化到源码解读的全方位拆解
4、OpenResty + Nginx 开发实战
总而言之,要成为 Nginx 高手,你必须彻底明确 Nginx 的能力模型,了解 Nginx 的工作原理,清楚怎样使用 Nginx 搭建出定制化的 Web 服务器或者微服务集群的负载均衡服务,并理解什么样的 API 服务适合用 Nginx 编写,同时清楚如何在 linux 操作系统上优化 Nginx,使 Nginx 可以轻松应付百万并发连接。

Nginx 核心知识图谱

 写留言

精选留言(1)

  • 2019-01-29
    看着不错哦,买来看看:)