2015-09-18 38 views
1

我不确定我是否缺少一些东西,但我真的很想让它像路由规则表一样工作。ARR机器上有没有相匹配的服务/网站就可以使用ARR?

但是,似乎如果我在服务器场上有服务,那么相同的服务应该在ARR机器上暴露相同的端点。

我不知道为什么这是真的需要或做错了什么。 它很愚蠢。因此,如果我有一些应用程序的农场,首先它必须部署到ARR机器,否则,由于ARR设置的机器上没有可用的服务/网页,会出现各种503,500,404等错误。

回答

0

首先,确保 “代理” 功能启用...

IIS首页 - >应用程序请求路由 - >服务器代理设置 - >启用代理

ARR Enable Proxy

然后添加重写规则到web.config如下:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="AppProxy1" stopProcessing="true"> 
        <match url="app1/(.*)" /> 
        <action type="Rewrite" url="http://appserver:8080/{R:1}" /> 
       </rule> 
       <rule name="AppProxy2" stopProcessing="true"> 
        <match url="app2/(.*)" /> 
        <action type="Rewrite" url="http://appserver:8081/{R:1}" /> 
       </rule> 
       <!-- add more apps here --> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

确保rew礼仪规则包含绝对URL(包括http://)。这个关键步骤表明ARR以“代理”模式运行。

另外,根据您的配置,您可能需要重写出站HTML链接。对作为一般的反向代理的更多信息,并使用ARR可以在这里找到:

http://www.iis.net/learn/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing

但其基本思路是上面列出。

+0

嗨。代理当然是启用的。也许我不明白stopProcesing在这里做了什么,你能否详细说明它的作用?我之前阅读过这篇文章,事实上他们的场景似乎并不是建立在ARR机器上的工作网站之上,这是我的问题的关键。 –

+0

我会奖励赏金,所以它当然不会消失。但它并不立即解决问题。 –

+0

感谢赏金:)我仍然希望能在这里得到一些帮助。 “stopProcessing”所做的就是防止URLRewrite在匹配时读取更多规则。为简单起见,尝试向localhost添加一条规则:',然后在浏览器中加载以下URL(http://localhost/appharbor/assets/images/stackoverflow-logo.png)。这应该演示ARR从除安装了ARR的服务器之外的服务器获取内容。 – dana

相关问题