什么是Nginx / Web服务器术语中的“反向代理”和“负载平衡”?

这是我经常听到的两个短语,主要与Nginx相关。 有人能给我一个非凡的定义吗?

定义通常难以理解。 我想你只是需要一些解释他们的用例。

简单的解释是:负载均衡是反向代理的功能之一,反向代理是可以进行负载均衡的软件之一。

下面给出一个长的解释。

例如,贵公司的服务在英国和德国都有客户。 由于这两个国家的政策不同,贵公司有两台Web服务器:英国的uk.myservice.com和德国的de.myservice.com,每个服务器都有不同的业务逻辑。 另外,你的公司只要有一个统一的端点,myservice.com就可以了。 在这种情况下,您需要将反向代理设置为统一的端点。 代理服务器接受URL myservice.com,并重写传入请求的URL,以便来自英国的请求(由源IP确定)转到uk.myservice.com,德国请求转到de.myservice.com。 从英国客户的角度来看,它从来不知道这个响应实际上是由uk.myservice.com产生的。

在这种情况下,请求流量到服务的负载实际上与uk.myservice.com和de.myservice.com上的服务器平衡,这是副作用。 所以我们通常不会将其称为负载均衡器,只是将其称为反向代理。

但是可以说,如果你的公司对所有的国家使用相同的策略,并且有2个服务器,a.myservice.com和b.myservice.com,只是因为一台服务器的工作负载太重。 在这种情况下,我们通常将反向代理称为负载均衡器来强调它被使用的原因。

基本定义如下:

反向代理是一个代理主机,它接收来自客户端的请求,并将其发送到其后面的服务器之一。 Nginx和Apache httpd通常用作反向代理。 这些在服务器请求的Web服务器的管理网络中。

这与位于客户端前面的(前向)代理服务器形成对比,并且代表客户端向Web服务器发送请求。 例如,您的企业网络地址转换器是一个转发代理。 这些位于来自请求源的客户端的管理网络中。

负载平衡是由反向代理执行的功能。 客户端请求由负载均衡器接收,负载均衡器尝试将该请求发送到服务器池中的一个节点(主机),以试图平衡各个节点间的负载。

我将它们看作是HTTP / Web服务器的功能。

负载平衡器的工作是在服务器节点之间分配工作负载,以便充分利用它。

反向代理是外部世界的接口,向服务器节点转发请求(即使我们有单个节点)。其他用例是缓存静态内容,压缩等

最简单的说法是:

反向代理接受来自客户端的请求,将其转发给可以实现它的服务器,并将服务器的响应返回给客户端。

负载均衡器在一组服务器之间分配传入的客户端请求,每种情况下都将所选服务器的响应返回给相应的客户端。

但他们听起来很相似,对吧? 这两种类型的应用程序位于客户端和服务器之间,接受来自前者的请求并从后者发送响应。 难怪有什么是反向代理与负载平衡器的混淆。 为了让他们分开,我们来探讨他们通常在网站上部署的时间和原因。


负载均衡


当一个站点需要多个服务器时,通常会部署负载平衡器,因为对于单个服务器来说,请求量太高,无法有效处理。 部署多个服务器也消除了单点故障,使网站更可靠。 通常,服务器都托管相同的内容,而负载平衡器的工作是以最有效利用每个服务器的容量的方式分配工作负载,防止任何服务器上出现过载,并最快响应客户端。

反向代理

而只有当您有多个服务器时部署负载平衡器才有意义,即使仅使用一个Web服务器或应用程序服务器部署逆向代理通常也是有意义的。 您可以将反向代理视为网站的“公开面孔”。其地址是网站广告的地址,它位于网站边缘,接受来自网络浏览器和移动应用程序的请求,网站。

更多细节…