正/反向(proxy)代理

最近整理日志时,看到关于代理方面的记录。感觉可能以后又时很长时间接触不到这些东西,有必要整理文档记录下一波。程序猿基础操作之代理。

1 基本概念

代理(英语:Proxy)也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。

代理服务器的基本行为就是接收客户端发送的请求后转发给其他服务器。代理不改变请求URI,会直接发送给前方持有资源的目标服务器。持有资源实体的服务器被称为源服务器。从源服务器返回的响应经过代理服务器后再传给客户端。

而这里代理又可以从行为上分为两类:

  • 正向代理
  • 反向代理

2 正向代理

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

正/反向(proxy)代理


在正向代理的过程中代理服务隐藏了真实的请求客户端,客户端请求的服务都由代理服务器代替来请求,通过正向代理服务器访问目标服务器,目标服务器是不知道真正的客户端是谁的,甚至不知道访问自己的是一个代理。


正向代理一般用于以下几个方面:

  • 突破访问限制,通过代理服务器可以访问终端本来无法访问到的资源。
  • 隐藏真实IP,目标服务器不能得到用户真实IP,仅知道代理服务器IP。
  • 本身代理服务器又一定缓存功能,可以对相同请求进行缓存,提高访问速度,不同终端访问同一请求时,可以利用缓存提高访问速度。

3 反向代理

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
正/反向(proxy)代理


在反向代理的情况下,反向代理对外都是透明的,客户端是无感知代理的存在的,访问者者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

反向代理一般用于以下几个方面:

  • 负载均衡,根据所有真实服务器的负载情况,将客户端请求分发到不同的真实服务器上。
  • 隐藏服务器真实IP,即客户端并不知道真正处理请求的业务服务器IP。而且一般情况下反向代理会作为整个业务在公网访问节点,被代理的业务服务器均被隐藏到内网中,提高安全性。
  • 反向代理服务器也可以对请求请求缓存,可以对静态资源和有大量访问相同的动态资源提供访问,提高访问速度。

4 正向/反向代理的区别

正方向代理主要可以从代理行为进行区别:

  • 从行为上看:正向代理是客户端代理,在整个请求中,代理服务器实质上就是一个客户端。而反向代理服务器是服务端代理,从请求中看,反向代理实质上是一个对外提供的服务器。
  • 从部署方来看:正向代理由客户端部署。反向代理由服务端部署。
  • 从请求双方的角度来看:正向代理的情况下,服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端。在反向代理中,客户端不知道真正的服务器是谁,以为自己访问的就是真实的服务器。
  • 从用途而言:正向代理一般用于突破网路限制,反向代理用于负载均衡和提高服务安全性。

5 参考链接

https://mp.weixin.qq.com/s/T7vd5heXXUjnbV-1wHg8xg