为什么称nginx为反向代理

  久闻nginx的大名,却一直没有时间尝试,以前做完项目都是npm run build把打包生成的dist文件交给“运维人员”就完事了。今天有时间,来把玩一下nginx。

  本文的参考链接:https://www.cnblogs.com/loong-hon/p/9060515.html

  关于nginx的安装及配置可以参考上面的链接,说实话我自己还没看,本文只来探讨一个问题,就是nginx为什么被称之为反向代理?

  要了解“反向代理”,就必须要了解什么是正向代理,在了解正向代理之前,我们先来探讨一下什么是代理。

  我们以超市购物为例,顾客在超市里购买了商品,这里有三个名词,分别是顾客(用户),超市(代理),商品(目标)。将此例映射到上网,比如我们要访问一个国外的网站,由于不能直接访问,因此需要(软件),此时客户机想要访问的目标是确定的,但客户机的来源和数量是不确定的,因此形成如下关系图,我们称之为正向代理。

为什么称nginx为反向代理_第1张图片

  我们已经了解了正向代理,那么什么是反向代理呢?

  先别急着去探究结果,我们先简单了解下nginx的一个特点,nginx是异步的,多个连接(万级别)可以对应一个进程,因此处理高并发的请求有着非常好的表现,说到高并发,就想到某宝了,某宝用的就是nginx服务器,当用户访问www.moubao.com的时候,一台服务器并不能支持那么高的并发量和那么高的访问量,因此就需要多个服务器来分担这个工作,此时nginx就需要代理用户的请求给不同的服务器来处理,形成如下的关系图。

为什么称nginx为反向代理_第2张图片

  我们称这种代理方式为反向代理,为什么呢?就因为用户从访问单个服务器到多个服务器了吗?我们来对比一下这两个模型。

  正向代理:用户(多个) ==> 代理服务器 ==> 确定的单个服务器

  反向代理:用户(多个) ==> 反向代理服务器  ==> 不确定的多个服务器

  这两个模型一个是多对单,一个是多对多,并没有找到所谓的正反关系呀!按理说,多对单的反义词不是单对多吗?好在实际场景中,我们可以找到这种关系,在实际项目操作时,正向代理和反向代理很有可能会存在在一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向代理服务器,反向代理了多台真实的业务处理服务器。生成如下的关系图。

为什么称nginx为反向代理_第3张图片

  在上面这个反向代理关系图中,和反向代理服务器连接的是一个正向代理服务器,这个正向代理服务器就是一个确定的“客户机”,此时我们可以得出一下模型。

  实际反向代理:正向代理服务器(单个) ==> 反向代理服务器 ==> 不确定的多个服务器

  因此在实际场景中,反向代理是一个单对多的模型,和正向代理多对单正好相反,因此我们也就不难理解为什么nginx被称为反向代理了。

你可能感兴趣的:(杂七杂八)