正向代理与反向代理

背景

我们常听到各种各样的代理,比如访问外网或者公司内网需要搭建VPN来设置代理进行访问,又比如说经常看见某些项目服务的features里说明它支持反向代理,当然最常见的就是nginx支持反向代理。那么什么是正向代理,什么是反向代理呢?

代理

正常情况下,我们作为客户端,向需要的某个服务进行访问,直接通过该服务的ip端口或者域名就可以与服务端进行通讯。

normal

可是在某些情况下,我们不知道服务端的地址又或者因为某些限制无法访问到服务端。这时候若有第三方服务器存在,其既能与客户端进行通讯,也可与服务端进行通讯。那么我们可以使用这个第三方服务器作为代理,进行请求转发,代理我们客户端获取服务信息。

proxy

正向代理

正向代理服务对象是client,它代理client去访问server获取信息。client对于server来说是透明的,它并不知道是哪个client访问的它,它能看到的只有proxy。其实我们常说的代理,更多的是指正向代理。我们访问国外网站所需要的VPN扮演的就是正向代理的角色。

proxy

正向代理常见的功能:

  1. 突破自身IP访问限制,访问国外站点。教育网、169网等网络用户可以通过代理访问国外网站。

  2. 访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源 的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

  3. 突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国 外的代理服务器试试。

  4. 提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

  5. 隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。

反向代理

反向代理的服务对象是server。事实上,我们往往是不知道反向代理的存在的。我们以为访问的就是真实的server地址,然而访问的可能只是反向代理,由反向代理将请求转发到了server上。所以说server对于client来说是透明的。

proxy

反向代理常见的功能:

  1. 保护和隐藏原始资源服务器;

  2. 加密和SSL加速;

  3. 负载均衡

  4. 缓存静态内容

  5. 压缩

  6. 减速上传

  7. 外网发布

总结

不管是正向代理还是反向代理,其都是client与server之间的一个代理服务。
正向代理服务于client,client对server透明。
反向代理服务于server,server对client透明。