- A+
正向代理(Proxy)
正向代理也就是常说的代理,结合下图理解,其核心思想是帮助用户做一些用户做不了的事情,Proxy和Client是一伙的,最常见的就是作为翻墙工具使用,比如访问Facebook,我访问不了,但是代理服务器可以(比如Tunnello),所以代理服务器就把FB上的内容拉取过来返回给我。
反向代理(Reverse Proxy)
反向代理相对难理解一些,其实有点类似于云计算,计算机只和这一大坨“云”交互,不需要知道云里面有多少服务器、机房在哪,反向代理也是如此,各种Internet请求都过来时,只访问挡在前面的反向代理服务器,根本不用关心真正的服务器有多少台、分别负责什么功能、哪一台又宕了等,最终的信息拉取、组装、过滤等功能都由反向代理服务器完成,给用户返回请求结果。
反向代理和服务端是站一起的,它的存在更多的是为了服务端保驾护航,这样的架构模式也就决定了在反向代理层大有可为,比如做信息过滤、请求分流、应答再处理等,常见的使用方式像负载均衡(Nginx就是利用了这一点,加上其轻量级的服务倍受青睐)、邮件服务器等。
二者区别
1. Proxy和Client组成一个LAN;Reverse Proxy和Server组成LAN。
2. Proxy需要Client做一些额外的配置,比如指定代理服务器等;Reverse Proxy不需要,Client直接向Reverse Proxy发起请求即可。
3. Proxy方式访问服务时,服务端并不知道Client信息、身份等,所以使用时有必要通过其他手段保证只有安全的、经过验证的客户端能使用这种方式请求服务;Reverse Proxy对于Client是透明的,Client并不知道自己请求的是真实服务器还是反向代理服务器。
其实关于为什么叫“正向代理”和“反向代理”个人感觉有点鸡肋,从流程上看,分明都是一个方向的请求嘛!如果非要掰扯一下,首先从图中可以看到代理的站队是相反的,而且Reverse本身也是反转的意思,其次若从Client角度看,正向代理更侧重于处理Proxy-->Server的阶段,反向侧重于处理Client-->Reverse Proxy的阶段。