反向代理(Reverse Proxy)方式是指以代理服务器来接受外部的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给外部的请求连接的客户端,此时代理服务器对外就表现为一个服务器。
反向代理服务器位于本地WEB服务器和外部网络之间,如下图所示:
当用户浏览器发出一个HTTP请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB 服务器的反向代理,需要将多个WEB服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网 页和图片等),而一些CGI脚本程序或者ASP.NET/JSP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。有四个最重要HTTP头标 记:
- Last-Modified: 告诉反向代理页面什么时间被修改
- Expires: 告诉反向代理页面什么时间应该从缓冲区中删除
- Cache-Control: 告诉反向代理页面是否应该被缓冲
- Pragma: 告诉反向代理页面是否应该被缓冲.
Application Request Routing(ARR)是一个基于代理的路由模块,可以根据HTTP头、服务器变量和负载均衡算法将HTTP请求转发到内容服务器上。它可以增强应用程序的效率和可扩展性,更好地利用内容服务器资源,并能够简化应用程序的部署,包括pilot management和A/B测试。ARR还有一种特性叫做shared hoster,用于修改如何共享目前提供的共享主机,为客户增加额外的服务。IIS 7.0 的应用请求路由模块(Application Request Routing (ARR) module),我们可以轻松实现反向代理.如何使用可参看下列几篇文章:
如何利用 IIS7 的 ARR 模組實做 Reverse Proxy 機制
在IIS7中应用Application Request Routing配置反向代理
web developer tips (36):使用IIS7.0 应用请求路由模块管理网站的beta版程序
用 IIS 7、ARR 與 Velocity 建设高性能的大型网站
IIS 6可以使用google code上一个项目:A C# reverse proxy for IIS