正向代理,也就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。结论就是:正向代理,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端,客户端需要进行一定的设置才能实现正向代理。
反向代理,比如用户访问 http://ooxx/readme,但ooxx上并不存在readme页面,于是他从另外一台服务器上取回来,然后作为自己的内容吐给用户。但用户并不知情。这里所提到的ooxx这个域名对应的服务器就设置了反向代理功能。结论就是: 反向代理,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
两者区别:
从用途上来讲:正向代理的典型用途:为在防火墙内的局域网客户端,提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率,或是屏蔽一些网站不能让局域网客户端访问。反向代理的典型用途:是将防火墙后面的服务器提供给Internet用户访问,反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
从安全性来讲:正向代理,允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务(就是代理服务器需要鉴权,客户端就像加了面纱,让原始服务器不能直接获取IP信息,当然可以通过IP追踪可以定位到最终的客户端地址)。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理,客户端的IP自然都是一清二楚。
开放的反向代理应用:nginx和nat123。nginx是单纯的反向代理,需要自行搭建反向代理服务才能使用,效率高。nat123是结合了NAT和反向代理的应用,可以直接使用,解决80端口问题等,速度快。当然也可以使用Apache,详情请自行查阅。