反向代理服务器功能剖析
从传统意义上讲,Proxy Server即代理服务器是指位于用户计算机网络与互联网之间的服务器,其功能就是代理网络用户去取得网络信息,可以把它理解为网络信息的中转站。如果 WEB浏览器配置为使用代理服务器的话,所有的请求都只会通过代理转发,代理服务器会按照用户的要求向站点发出访问请求,并针对各种应用依次采用不同的过 滤规则。
“透明代理服务器”指的是在客户端完全不知晓的情况下,对代理服务器进行配置,使其可以处理用户请求。其缺点是代理服务器不支持SSL,但是用 户浏览器不需要对普通HTTP通信(即明文HTTP通信)配置,很多情况下,它与高速缓存代理服务器一起使用,代理服务器从其高速缓存中访问图片和其它文 件,而无需每次都占用互联网带宽从web服务器上获取。
反向代理服务器(Reverse Proxy Server),通过在繁忙的WEB服务器和Internet之间增加一个高速的WEB缓冲服务器来降低实际的WEB服务器的负载,提高对WEB页面的访 问速度。反向代理服务器位于用户WEB服务器和互联网之间。当一个HTTP连接进入时,反向代理服务器会决定所执行的操作,然后向后端的WEB服务器发出 请求。反向代理服务器相当重要,它们常常肩负多种任务。
反向代理服务器可以是一个SSL终结器。这意味着SSL授权证书及其密钥都被装在代理服务器上,连同这些站点的对应IP地址。SSL因此被终止 在代理服务器,而且对后端服务器的请求将会以纯文本的形式传送。这在通常情况下确实不错,但如果你的终端网络是不安全的,网络骗术可通过安全通道获取所需 要的服务请求。
在这儿我们要探讨一下虚拟主机和SSL。虚拟主机的概念是基于站点名称的,在连接HTTP报头数据方面起作用。当发出了HTTP请求后,支持虚 拟主机的WEB服务器会为不同的内容服务,这些内容是基于被请求站点的。本质上讲,这意味着你可以将多个域名指向一个相同的IP地址。如果启用了SSL, 必须与特定的IP地址相结合,而且SSL授权证书必须与站点的名称相匹配,此站点正是用户试图访问的站点。SSL对话在HTTP数据发送之前进行,因而服 务器只有一个选择,即一个授权证书呈现一个IP地址。如果在一个SSL连接建立之后,却发现请求的URL属于另一个站点,WEB浏览器会通知用户。如果它 不如此工作,SSL就毫无意义了。
一个代理服务器也可以是一个负载平衡器。负载平衡从其基本意义上讲,其工作方式不外乎两种,实际工作时可以某一种方式运行。第一种工作方式即智 能地在IP层循环访问一组服务器,第二种方式通过使用代理服务器来做一些更加智能的工作。一组服务器可以使用DNS轮询为站点服务。多个DNS记录可以配 送给一个主机名,因此连接就会从这一组服务器中选择一个。当然,这对于使用SSL站点进行管理真是一种痛苦。路由器也可以以相似的方式实现负载平衡,这就 要求保存现有的状态从而使后续的请求可以被传送到适当的服务器。不过,如此运作的大多数设备都只是充当一个代理服务器。使用代理服务器实现负载平衡很有意 义,特别是在考虑了它所提供的其它特性以后。
反向代理服务器可以充当一种WEB服务器的应用层防火墙。实际上,它包含两个方面:进入的请求受到代理服务器中所配置的规则和策略的制约,而WEB服务器被封闭起来,与外部世界隔离,从而有效地抵消了跨站点的脚本攻击。
反向代理服务器还经常担当内容过滤器的职责,虽然过滤与防火墙息息相关,但反向代理却拥有更佳的性能。大多数代理服务器厂商实施一种阻止某些关键字或内容类型的机制。这可以是防止恶意代码攻击真实服务器的另一个层次。
前端代理服务器可以执行的大量任务也可以被反向代理服务器完成。一台高速缓存服务器,如squid,可以在多种配置中与反向代理服务器协同工 作。如果反向代理服务器不支持高速缓存,很多站点会选择通过一个高速缓存代理来配置对后端服务器的访问,这样图像和其它静态内容就不必从真实服务器中检 索。许多反向代理服务器也可以将一些特定的任务,如图片出租给一个完全独立的服务器。这些代理服务器通常被称为“WEB加速器”。
有许多代理服务器产品能够以反向代理服务器模式运行,在此我们只关注几个免费的开源产品。Apache2.2现在伴随着模块代理服务平衡器一起使用。Apache依靠 模块代理支持反向代理服务器已有很长时间了,但是通过使用平衡器模块,Apache可以实现更加复杂和更有弹性的配置。当然,配置并非十分简单,Apache本身资源密集而且对内存要求很高。
Pound是一个反向代理服务器及负载平衡器,可以终止SSL连接。配置相当简易,它与Apache相比的极大优势在于它经过精心编制、小巧灵活。许多Pound用户给出了其相当惊人的吞吐量统计,当然它也一直是可靠有效的。
近期评论