一、简介

实践中客户端无法直接跟服务端发起请求的时候,我们就需要代理服务。代理可以实现客户端与服务端之间的通信,我们的Nginx也可以实现相应的代理服务。代理分为正向代理和反向代理,此文就来演示一下Nginx配置正向代理和反向代理的场景。

二、正向代理和反向代理的区别

下图基本形象的展示了两者的区别,后面的引用为百科介绍在看的过程中和下图结合很容易理解
1.正向代理
客户端知道最终要访问的服务器地址
业务需求:代理软件
2.反向代理
客户端只知道代理服务器地址,而不知道真是访问的服务器地址
业务需求:负载均衡
在这里插入图片描述

代理服务(Proxy),通常也称为正向代理服务。
如果把局域网外Internet想象成一个巨大的资源库,那么资源就分布到了Internet的各个点上,局域网内的客户端要访问这个库里的资源就必须统一通过代理服务器才能对各个站点进行访问。
局域网内的机器借助代理服务访问局域网外的网站, 这主要是为了增加局域网内部网络的安全性,使得网外的威胁因素不容易影响到网内,这里代理服务器起到了一部分防火墙的功能。同时,利用代理服务器也可以对局域网外的访问进行必要的监控和管理。正向代理服务器不支持外部对内部网络的访问请求。
与正向代理服务相反,如果局域网向Internet提供资源,让Internet上的其他用户可以访问局域网内的资源,也可以设置一个代理服务器,它提供的服务就叫做反向代理(Reverse Proxy)服务。可以看到,反向代理服务与代理服务在功能逻辑上刚好是相反的。
正向代理服务器与反向代理服务器的概念很简单,归纳起来就是,正向代理服务器用来让局域网客户机接入外网以访问外网资源,反向代理服务器用来让外网的客户端接入局域网中的站点以访问站点中的资源。理解这两个概念的关键是要明白我们当前的角色和目的是什么,在正向代理服务器中,我们的角色是客户端,目的是要访问外网的资源;在反向代理服务器中,我们的角色是站点,目的是把站点的资源发布出去让其他客户端能够访问。
知道了这两个概念,就可以学习如何让Nginx服务器来提供代理和反向代理服务器了。

三、举例生活中的例子理解两者代理的区别

技术源于生活并服务于生活

  • 正向代理:客户端 <一> 代理 一>服务端
    正向代理简单地打个租房的比方:
    A(客户端)想租C(服务端)的房子,但是A(客户端)并不认识C(服务端)租不到。
    B(代理)认识C(服务端)能租这个房子所以你找了B(代理)帮忙租到了这个房子。
    这个过程中C(服务端)不认识A(客户端)只认识B(代理)
    C(服务端)并不知道A(客户端)租了房子,只知道房子租给了B(代理)。
  • 反向代理:客户端 一>代理 <一> 服务端
    反向代理也用一个租房的例子:
    A(客户端)想租一个房子,B(代理)就把这个房子租给了他。
    这时候实际上C(服务端)才是房东。
    B(代理)是中介把这个房子租给了A(客户端)。
    这个过程中A(客户端)并不知道这个房子到底谁才是房东
    他都有可能认为这个房子就是B(代理)的 由上的例子和图我们可以知道正向代理和反向代理的区别在于代理的对象不一样,正向代理的代理对象是客户端,反向代理的代理对象是服务端。