怎么理解反向代理 reverse proxy

反向代理( reverse proxy )

理解反向代理前先得说说什么是代理,比如我们想翻墙去使用国外的某些网站,比如想使用 google 提供搜索,那么我们就得需要一个代理。

我们在客户端这边配置一下代理服务器,然后当我们访问 google 服务的时候,我们首先把请求发送给代理服务器,然后代理服务器将请求在发给 google,然后 google 将内容返回给代理服务器,然后代理服务器将内容再返回给我们。这就是所谓的代理。

那么什么是反向代理呢? 其实跟上述代理方式类似,唯一的不同是客户端的代理服务器是客户端配置的还是服务端配置的。像上述在客户端配置代理服务器的方式叫做正向代理。在服务端配置的代理服务叫做反向代理。这里的反向是根据客户端的角度来解释的。

这个 "反向" 着实不好理解,你可以这样理解,反向代理就是服务端代理,客户不可知,也不用知道。反向代理可以在不影响客户的情况下更新后端 service 的真正提供者。因为有了这样一层间接性,所以做以下功能:

  1. 负载均衡
  2. 分流请求
  3. 充当防火墙,你不需要将后端service都暴露给外部。
  4. 缓存,比如静态文件。

任何事物都有坏处,比如这种使用反向代理的方式使架构复杂了,总体的资源消耗也变多了, 每一个 TCP 连接都要再建立一个到后端 service 的连接。另外,反向代理可以使用 nginx, squid 等。

posted @ 2017-05-28 23:39  砺能  阅读(...)  评论(...编辑  收藏