实现代理的方式就是在服务器上安装代理服务器软件,让其成为一个代理服务器,开源软件中比较流行的就是squid和nginx。

一、正向代理

    正向代理是一个位于客户端A和原始服务器B之间的一个服务器,为了从服务器获取内容,用户从客户端向代理服务器发送http请求并指定目标服务器,然后代理服务器向目标服务器转交请求,之后将获得内容返回给客户端,在此之前客户端要设置才能使用正向代理。

    正向代理就是代理服务器代替客户端去访问目标服务器,为什么要用到代理服务器呢?这就要从代理服务器的使用意义说起。

    1.访问无法访问到的目标服务器:如客户端无法直接到达服务器端可能中间路由出现故障,只能使用代理服务器代替自己去访问服务器;

    2.为了加快访问速度:可能客户端直接到服务器端的带宽比代理服务器到服务器的带宽低;

    3.Cache:在用户从客户端访问服务器之前,已经有人通过代理服务器访问过目标服务器,这样就会把缓存的数据存留在代理服务器中,所以用户可以直接从代理服务器中取得数据;

    4.代理服务器与原始服务器之间设置防火墙作为网关,用来过滤外网对其访问,在代理服务器上设置访问权限,允许某段外网访问互联网,所以用户可以通过代理服务器访问到原始服务器;

二、反向代理

    反向代理中对于客户端而言代理服务器它就像原始服务器,它不知道真实原始服务器的存在,在客户端也不需要进行特别的设置。

    客户端向反向代理服务器的命名空间(name-space)中的内容发送请求,然后反向代理服务器判断向何处(原始服务器)转发请求,并将获取的内容返回给客户端。

    使用反向代理的意义:

    1.隐藏和保护原始资源服务器:代理服务器与原始服务器之间有防火墙,只允许代理服务器访问原始主机,这样防火墙和代理服务器共同保护了原始资源服务器;

    2.增强了web服务器的安全性:代理服务器对外表现为一个web服务器,这个服务器没有保存任何网页的真实数据,所以的静态网页或者CGI程序都保存在内部的web服务器上,因此对于反向代理服务器的***并不会使得网页信息遭到破坏;当然反向代理服务器也可以像正向代理服务器一样拥有cache的作用;

    3.为后端服务器提供负载均衡:使用负载均衡策略session的保持或者调整后端服务器性能不均;

两者的区别:

从用途上来讲:正向代理的典型用途是为在防火墙内的局域网提供客户端访问Internet的途径;而反向代理是将防火墙后面的服务器提供给Internet用户访问;

从安全性来讲:正向代理允许客户端通过它访问任意网站,所以必须采取安全措施确保为经过授权的客户端提供服务;而反向代理对外是透明的,客户端不知道自己访问的是一个代理服务器。

更详细的解释参见论坛:http://bbs.51cto.com/thread-967852-1-1.html