正向代理与反向代理
正向代理与反向代理
2023年7月26日
摘要
正向代理(Forward-Proxy)与反向代理(Reverse-Proxy)是折腾服务器或者研究计算机网络永远然不开的两个词。然而很多人一直理解不清楚这两个概念。本文将用最简单的方式对他们进行介绍并区分。
基本概念
首先无论是正向代理还是反向代理都离不开其中的代理,代理这个词在网络世界中很好理解,就是找了一个中间第三者帮忙中转传输数据,而不是客户端(Client)和服务器(Server)二者直接传递。无论中转是为了做什么,都不影响代理这个概念。
正向代理
由于大部分人大部分时间在数据传输中都是担任着客户端的角色,而服务器大多数时候都部署在企业或公司,因此,对于方向的定义就以站在了客户端的视角,因此,正向代理也可叫做客户端代理。由此可见原本的名字起的有多烂,完全无法一眼让人理解其到底是什么含义。
客户端代理,顾名思义,就是客户端请来的代理,客户端将使用一个代理服务器帮助自己收发消息,自己藏在背后。不难想到,使用了正向代理也就是客户端代理的设备,在逻辑上是对服务器匿名的。对于服务器而言,其看到的客户端就是真正的客户端请来的代理服务器,他无法知晓代理服务器的客户端也就是真正的客户端到底是谁。需要注意的是,一个代理服务器背后可以有不止一个客户端,只需要在其内部定义清楚数据转发逻辑即可。我们日常使用的魔法上网的工具就是正向代理。
用日常生活举个例子,客户端就是居民,服务器就是商场,正向代理服务器就是跑腿小哥。跑腿小哥(代理)可以有很多个居民(客户端)请求代理,然后帮他们去商场(服务器)买东西。而商场只知道买东西的是跑腿小哥,只要跑腿小哥保密(有一套优秀的加密算法),商场就不可能知道真正要买东西的是谁。
反向代理
和正向代理相反,反向代理也就是服务器代理,是服务器请来的代理,可以让服务器藏在背后。此时,客户端直接访问的是代理服务器,他并不知道背后真正的服务器是谁,反向代理服务器会将客户端的请求按照一定的路由规则转发给真正的服务器。
网站部署常用的 Nginx
,Apache
等就是反向代理。
也用日常生活举个例子,某人(客户端)想从百事公司(服务器)买一瓶百事可乐,他走到了一个超市(反向代理服务器),说要一瓶可乐,他就买到了,但是他永远不知道百事公司的进货渠道在哪里,他只知道在超市(反向代理服务器)这里可以得到想要的东西。然而,超市上级可能还有省级代理(更高级的反向代理服务器),同样的,在网络中也有可能会使用多级代理。一个超市(代理)有可能会卖很多种饮料,你要什么他给你什么,在网络中也是一样,一个反向代理后面可能有多个网站,根据你的请求来决定和谁进行数据传输。