在IIS7中应用Application Request Routing配置反向代理

转载自:http://www.cnblogs.com/leven/archive/2009/11/10/Proxy_Application_Request_Routin.html

    在配置web服务器的时候,我们经常遇到这样的问题,由于某些原因,该服务器只能拥有一个公网IP,但是可能需要提供其他机器或者本机上其他webserver的服务器给访问者,同时又不希望使用其他端口,如果在linux下,常见的解决方案是使用nginx作为前端server,通过反向代理间接访问其他webserver.在IIS7之前,在windows上要实现该功能却不是一件容易的事情,但是在IIS7上,通过Application Request Routing模块,我们可以轻松实现反向代理.

    本次测试配置的情况,简单起见,只在iis中测试,配置3个网站,第一个”LevenWeb”,使用80端口提供服务,第二个”levenblog”,下面运行着levenblog2.0.9,使用8080端口,第三个”phpweb”,下面有一个”test.php”的phpinfo页面(iis7 php配置本文不再详述),本机ip:192.168.1.8,为了测试,我们先进行域名绑定,也就是在leven.com.cn下新增3个子域名,域名绑定如下图所示:

    我们的目标如下:

    http://phpweb.leven.com.cn/ 访问phpweb站点,也就是http://localhost:8081/

    http://levenblog.leven.com.cn/ 访问levenblog站点,也就是http://localhost:8080/

    http://realblog.leven.com.cn/ 访问公网上的levenblog站点,也就是http://leven.com.cn/

    http://localhost/leven 访问levenblog站点,也就是http://leven.com.cn/

    首先前往http://www.iis.net/extensions/ApplicationRequestRouting下载Application Request Routing,然后安装,本次实践使用的是V2版.

    安装完毕之后,新建3个站点:

然后找到ARR配置菜单:

开启Proxy项:

    然后在levenweb站点下配置反向代理路由,配置可以使用UI界面或者直接修改web.config的模式,本次配置给出uiconfig文件两种方式,个人更喜欢config配置文件模式.


    进入该项,先配置第一项, http://phpweb.leven.com.cn/ 访问phpweb站点,也就是http://localhost:8081/,选择”Add Rules...”:

    然后选择”Blank Rule”

    然后填写如下:

    该参数设置表面ARR将拦截所有请求

    继续在”Conditions”中选择”Add”:

    该设置表面只有HTTP_HOST为phpweb.leven.com.cn的URL才能通过该规则,如果您绑定了多个域名,可以根据多次增加或者通过正则表达式的|来间隔

    最后在下面的Action中配置代理路径:

    在这儿,{R:1}代表了MatchUrl中的第一个匹配括号

    同样配置的web.config文件如下:

复制代码
       < rewrite >
        
< rules >
          
< rule  name ="phpweb" >
            
< match  url ="^(.*)"   />
            
< conditions >
              
< add  input ="{HTTP_HOST}"  pattern ="^phpweb.leven.com.cn$"   />
            
</ conditions >
            
< action  type ="Rewrite"  url ="http://localhost:8081/{R:1}"   />
          
</ rule >
        
</ rules >
      
</ rewrite >
复制代码

 

    测试访问http://phpweb.leven.com.cn/test.php,结果如下:

    下面同样可以配置levenblog.leven.com.cn和realblog.leven.com.cn

    Ui界面配置不再说明,配置完成的web.config如下:

 

复制代码
       < rewrite >
        
< rules >
          
< rule  name ="levenblog" >
            
< match  url ="^(.*)"   />
            
< conditions >
              
< add  input ="{HTTP_HOST}"  pattern ="^levenblog.leven.com.cn$"   />
            
</ conditions >
            
< action  type ="Rewrite"  url ="http://localhost:8080/{R:1}"   />
          
</ rule >
          
< rule  name ="realblog" >
            
< match  url ="^(.*)"   />
            
< conditions >
              
< add  input ="{HTTP_HOST}"  pattern ="^realblog.leven.com.cn$"   />
            
</ conditions >
            
< action  type ="Rewrite"  url ="http://leven.com.cn/{R:1}"   />
          
</ rule >
          
< rule  name ="phpweb" >
            
< match  url ="^(.*)"   />
            
< conditions >
              
< add  input ="{HTTP_HOST}"  pattern ="^phpweb.leven.com.cn$"   />
            
</ conditions >
            
< action  type ="Rewrite"  url ="http://localhost:8081/{R:1}"   />
          
</ rule >
        
</ rules >
      
</ rewrite >
复制代码

 

    访问结果分别为:


    我们再添加最后一项,http://localhost/leven 代理到 http://leven.com.cn/

 

复制代码
           < rule  name ="leven.com.cn" >
            
< match  url ="^leven/(.*)"   />
            
< conditions >
              
< add  input ="{HTTP_HOST}"  pattern ="^localhost$"   />
            
</ conditions >
            
< action  type ="Rewrite"  url ="http://leven.com.cn/{R:1}"   />
          
</ rule >
复制代码

 

    但是此时访问会出现问题,如下图:

    显然,出现了css丢失等情况,通过查看源码:

    可以看到css的路径有误,不仅如此,所有的img,a标签路径全部出现了错误,代理之后的地址是/leven/xxx,但是源地址仍然是/xxx,因此我们还需要增加一个Outbound Rule

    配置好的config文件如下:

 

复制代码
         < outboundRules >
          
< rule  name ="Add application prefix" >
            
< match  filterByTags ="A,Img,Script,Link"  pattern ="^/(.*)"   />
            
< conditions >
              
< add  input ="{URL}"  pattern ="^/leven/.*"   />
            
</ conditions >
            
< action  type ="Rewrite"  value ="/leven/{R:1}"   />
          
</ rule >
        
</ outboundRules >
复制代码

 

    然后刷新:

 


 

    可见路径正确.

    在使用了反向代理之后,编程上也有些地方需要注意了,在取客户端IP的时候,由于多了一层代理,直接是无法获取的,因此,我们需要开启


    然后通过获取Header中的X-Forworded-For字段来取得客户端IP

    从测试来看,ARR是个非常有用的代理模块,能完全满足我们反向代理的需求,不仅如此,ARR还提供了UrlRewrite,ServerFarms,Cache等很多功能,很是值得我们挖掘.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: IIS(Internet Information Services)是微软开发的一款用于托管网站和Web应用程序的服务器软件。Application Request Routing(ARR)是IIS的一个模块,用于负载均衡和代理请求。要在IIS安装Application Request Routing,您可以按照以下步骤进行操作: 1. 确保您已经安装了IIS。如果尚未安装,请先安装IIS,方法是打开“控制面板”,选择“程序”或者“程序和功能”,然后点击“打开或关闭Windows功能”。找到“Internet Information Services”并选择将其安装。 2. 下载ARR软件包。您可以在微软官方网站或其他可靠的下载站点上找到合适的ARR版本。确保下载的版本与您的IIS兼容。 3. 解压ARR软件包。将下载的ARR软件包解压到您计算机上的一个临时文件夹。 4. 打开IIS管理器。点击开始菜单,然后输入“inetmgr”以打开IIS管理器。 5. 打开服务器节点。在IIS管理器,找到您的服务器节点,并双击以展开其内容。 6. 安装ARR模块。在服务器节点上,找到“模块”图标,并双击以打开模块页面。点击右侧“导入模块”以浏览并选择先前解压的ARR软件包的“ApplicationRequestRouting”文件。 7. 启用ARR模块。在ARR模块的“模块”页面上,找到“不可见”列并启用ARR模块。 8. 重启IIS。在IIS管理器,右键单击服务器节点,并选择“重新启动”。 完成上述步骤后,您的IIS就已经成功安装了Application Request Routing模块。ARR可以帮助您实现负载均衡、反向代理和URL重写等功能,提高您的Web应用程序的性能和可靠性。 ### 回答2: IIS(Internet Information Services)是用于托管和发布Web应用程序的Windows服务器软件。Application Request Routing(ARR)是一个IIS扩展模块,可以用于将传入的HTTP请求路由到后端服务器。下面是安装和配置Application Request Routing的步骤: 1. 下载ARR并安装:首先,从官方网站(https://www.iis.net/downloads/microsoft/application-request-routing)下载ARR扩展程序集。确保你下载的版本与你的IIS版本兼容。安装过程通常是双击下载的安装文件,然后按照安装向导的指示操作进行安装。 2. 配置Web服务器:打开IIS管理器,并选择你的Web服务器。双击“配置应用程序请求路由”图标。这将打开一个新的配置窗口。 3. 添加服务器代理:在ARR配置窗口,点击右侧的“添加服务器代理”链接。在弹出的对话框,输入后端服务器的IP地址或域名,并为该服务器分配一个唯一的名称。点击“确定”按钮保存设置。 4. 配置请求路由规则:在ARR配置窗口,点击左侧的“请求路由规则”链接。然后点击右侧的“添加请求路由规则”链接。在弹出的对话框,为规则指定一个名称,并配置匹配条件和相应的转发行为。点击“确定”按钮保存设置。 5. 应用配置更改:完成所有的ARR配置后,点击ARR配置窗口右上角的“应用”按钮,以应用配置更改。 通过以上步骤,你已经成功安装和配置Application Request Routing扩展。现在,传入的HTTP请求会被路由到后端服务器,以响应请求并返回相应的内容。通过ARR的配置,你可以实现负载平衡、故障转移和基于规则的请求转发等功能。 ### 回答3: IIS安装Application Request Routing (ARR) 是为了在Web服务器实现负载均衡和请求路由的功能。ARR是一个扩展模块,可以安装到IIS上,以增强其能力。 要安装Application Request Routing,首先需要确保已经安装了IIS。然后可以按照以下步骤来安装ARR: 1. 下载ARR安装包:可以从微软官网下载ARR的安装程序。选择与你的服务器版本和操作系统相匹配的版本。 2. 运行安装程序:双击下载的安装程序并按照提示进行安装。可以选择安装路径和其他选项。 3. 启用ARR扩展:安装完成后,打开IIS管理器。在左侧的连接列表,选择你的服务器。然后在间的内容面板,双击“模块”图标。 4. 添加ARR扩展:在模块列表,点击右侧的“添加模块”链接。在弹出的对话框,选择“<全局模块>”选项卡,并找到“Application Request Routing”项。选该项并点击“确定”。 5. 配置ARR规则:在IIS管理器的左侧连接列表,选择你的Web站点。然后在间的内容面板,找到“Application Request Routing - 代理”图标并双击。 6. 添加代理服务器:在代理服务器面板,选择“服务器代理设置”选项卡。点击右侧的“添加”按钮,输入代理服务器的IP地址和端口号,并点击“确定”。 7. 测试ARR:完成配置后,可以测试ARR是否正常工作。可以尝试通过不同的IP地址或域名访问你的Web站点,并观察请求是否按照预期进行路由。 通过以上步骤,你可以成功安装和配置IISApplication Request Routing,并实现负载均衡和请求路由的功能。请确保在安装前备份你的服务器,并按照官方文档或其他可靠来源提供的具体步骤进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值