HTTP代理与反向代理

thone00 2012-05-17

出于安全考虑,局域网内的机器访问访问墙外的网站借助于代理服务器进行,如果把局域网外Internet想象成一个巨大的资源库,局域网内的用户要访问这个库里的资源必须统一通过代理服务器进行。反过来,如果局域网向Internet提供资源,让Internet上的用户访问局域网内的资源也可以设置成一个代理服务器,只不过与我们常用的代理服务器方向正好相反,所以叫反向代理(ReverseProxy)。

1、代理可分为三种:标准的代理缓冲服务器、透明代理缓冲服务器、反向代理缓冲服务器

(1)标准的代理缓冲服务器

这种方式需要在浏览器配置中指明代理服务器的IP地址和端口号。浏览器每次都把请求送给代理服务器处理。代理服务器可以有缓存的功能:它根据请求确定是否连接到远程web服务器获取数据,如果在本地缓冲区有目标数据,则直接将缓存数据传给用户即可,如果没有的话则先取回数据,先在本地保存一份缓冲,然后将数据发给客户端浏览器。

(2)透明代理缓冲服务器

透明代理缓冲服务器和标准代理服务器的功能完全相同,但是代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口号)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以透明代理对于ISP(Internet服务器提供商)特别有用。

(3)反向代理缓冲服务器

反向代理是和前两种代理完全不同的一种代理服务,使用它可以降低原始web服务器的负载。反向代理服务器承担了对原始web服务器的静态页面的请求,防止原始服务器过载。它位于本地web服务器和Internet之间,处理所有对web服务器的请求,组织了web服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户;如果没有缓冲,则先向web服务器发出请求,取回数据并在本地缓存后再发送给用户。这种方式通过降低了向web服务器的请求数,从而降低了web服务器的负载。

2、反向代理有两种用法:

(1)一种是为多个网站的Web服务器提供代理,这些网站的域名都指向反向代理服务器,对这些网站的请求全都发给了反向代理,由反向代理服务器转发HTTP请求给相应网站的Web服务器。

(2)一种是为一个网站的Web服务器集群提供代理,反向代理作为负载均衡器决定具体哪个Web服务器接收请求。

反向代理总是位于Web服务器的前端,Internet上的用户对Web服务器的连接要先经过反向代理,然后由反向代理决定哪个Web服务器处理用户请求,并将请求路由给相应的Web服务器。对静态内容可以在反向代理上缓存,这样就不用再向Web服务器路由了。

3、除了缓存和负载均衡,反向代理还能提供如下功能:

(1)安全:反向代理隔离了用户和Web服务器,用户很难针对特定的服务器发动攻击;

(2)数据加密/SSL加速:某些Web服务器可能不具有SSL加密功能,但是具有加密功能的反向代理服务器可以为Web服务器提供数据加密,而且装备了SSL加速硬件的反向代理服务器还能为Web应用提供了高速的加密通道;

(3)压缩:代理服务器能压缩经过的数据以节省带宽

相关推荐