正向代理和反向代理

之前就了解过正向代理和反向代理, 这两天突然又搞不清楚了。看来还是没有真的了解正向代理和反向代理。

代理

代理,中介,委托。字面意思就是帮别人做事。原理是多了中间方。本来双方直接联系,现在不直接联系,变成了代理/中介和某一方联系。
好了,中文的意思就是上面的简单解释了。 在计算机中,很多地方都会用到代理,比如:

  • 在设计模式中有 代理模式/委托模式。
  • 服务器中的代理服务器。有 正向代理,反向代理。
  • 网络攻击中的中间人攻击,实际上也能算代理。

今天要说的就是 正向代理和反向代理。

正向代理。用过科学上网的都知道,那个服务器就是一个正向代理服务器。
反向代理。用过nginx的应该比较熟悉,nginx一大特色就是支持反向代理。

我为什么之前了解了,现在又糊涂了。主要也是因为名词的不理解。正向 反向 其实 和方向没有关系,和数据流动没关系。正是这样的翻译,让人比较迷惑和误会。 正向代理 反向代理 都是代理。 都是代理的一种表现方式。它们主要是看给谁做代理。这个正和反是从客户端的角度来区分。从客户端角度来看,正向代理,就是给客户端做代理。 反向代理,就是給服务器做代理(即对客户端来说反过来给服务器做代理)。

正向代理 反向代理 都是代理。 都是代理的一种表现方式。区分它们的关键是,看它给谁做代理。这个正和反是从客户端的角度来区分。从客户端角度来看,正向代理,就是给客户端做代理。 反向代理,就是給服务器做代理(即对客户端来说,是反过来给服务器做代理)。

  • 在没有代理情况下,客户端和服务端是直接通讯的。
  • 正向代理。 客户端请了代理/中介,由中介和服务端通讯。中介代表了客户端。可以看成客户端和中介是一伙的,服务端是另一伙。
  • 反向代理。 服务端请了代理/中介, 由中介和客户端通讯。中介代表了服务端。可以看成服务端和中介是一伙的,客户端是另一伙。
![找不到图片时显示的文字](imgs/20220414_1.jpeg)

正向代理的运用:

  • vpn的使用。
  • 中间人攻击。
  • 设计模式中 代理模式/中介模式/委托模式。

反向代理的运用:

  • nginx的负载均衡。负载均衡的原理就是反向代理。
  • 内网传统。ngrok。原理也是反向代理。

正向代理的用途:

  • 对服务端隐藏客户端。 服务端只知道中介。
  • 突破访问限制。 如VPN。

方向代理用途:

  • 对客户端隐藏服务端。 客户端只知道中介。
  • 负载均衡。

看到一篇很通俗的解释,链接

正向代理和反向代理的区别
虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的。
1、正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源。反向代理则是服务器的代理,帮助服务器做负载均衡,安全防护等。
2、正向代理一般是客户端架设的,比如在自己的机器上安装一个代理软件。而反向代理一般是服务器架设的,比如在自己的机器集群中部署一个反向代理服务器。
3、正向代理中,服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端。而在反向代理中,客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。
4、正向代理和反向代理的作用和目的不同。正向代理主要是用来解决访问限制问题。而反向代理则是提供负载均衡、安全防护等作用。二者均能提高访问速度。