正向代理和反向代理的形象理解

导读 代理服务器分为正向代理服务器和反向代理服务器,他们都是充当客户端和目标服务器的中介,都是由客户端发送请求到代理服务器,再由代理服务器传递请求给目标服务器,最终再由代理服务器传递响应信息给客户端。他们结构上很类似,到底是啥区别呢?
正向代理是个媒人

正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理和反向代理的形象理解

什么时候会用到正向代理呢?举个栗子,如果你厌烦了国内的搜索网站,想 fan qiang 上Google怎么办?一个方法就是买个国外的代理服务器,这个代理服务器是可以访问Google的。因此,我们就可以请求该代理服务器,告诉它帮我们访问Google的页面,并把Google的页面再返回给我们,如此就可以绕过**了。这个中介服务器就是典型的正向代理服务器。

因此,正向代理,就是客户端委托一个服务器作为自己的代表,向目标服务器发起请求。正向代理就像古时的媒人,男*看上一个姑娘,并不能直接向姑娘家提亲,必须要找个媒人代为办理,谓之明媒正娶。

由于是代理服务器代替客户端发起请求,因此 Server 并不知道真正的 Client 是谁(当然如果代理服务器公布了Clien的话也可以)。因此,利用正向代理,客户端可以对 Server 隐藏自己的地址,从而避免受到可能的攻击。

代理服务器还有一个优点:他可以提前缓存 Server 的内容,Client 的某些请求可由代理服务器直接返回,从而提高客户端的访问速度。

另外,如果 Client 要通过正向代理访问目标服务器,必须要对代理服务器进行设置,设置代理服务器的 IP 地址和代理程序的端口,才能访问代理服务器。

反向代理是个替身

反向代理服务器也是一个中介服务器,充当 Client 和 Server 沟通的桥梁。但是他和正向代理有什么区别呢?如果说正向代理服务器像是一个媒人,那么反向代理服务器就像是养在深闺人未识的大家闺秀的一个替身,替她出面把关应酬。然而在追求者(Client)看来,Client 并不知道自己打交道的是个替身,他以为自己访问的是目标 Server,因为很多网站公布的访问地址其实就是代理服务器的访问地址。看下图:

正向代理和反向代理的形象理解

为什么需要一个反向代理服务器作为一个桥梁呢?考虑这种情况:出于安全的考虑,我们不想把 Server 直接暴露出来,而是放在内网中。这时 Client 在外网无法就无法 Server 了。因此,我们就可以添加一台中间服务器,连接内外网,这样就可以允许外网用户访问,同时可作为防火墙对外部请求进行限制,提高内部服务器的安全性。

除了防火墙外,反向代理服务器还有一个典型的用途就是作为负载均衡服务器,根据目标服务器的工作负荷情况,将请求分发到合适的服务器。

总结

正向代理和反向代理区别总结如下:

正向代理是对客户端的代理,由客户端设立,客户端了解代理服务器和目标服务器,但目标服务器不了解真正的客户端是谁;使用正向代理可达到 突破访问限制、提高访问速度、对服务器隐藏客户端IP等目的;
反向代理是对服务器的代理,由服务器设立,客户端不了解真正的服务器是谁,使用反向代理可达到负载均衡、保障服务端安全、对客户端隐藏服务器IP等目的。

原文来自: https://www.linuxprobe.com/zx-proxy-fx.html