我不确定我是否缺少一些东西,但我真的很想让它像路由规则表一样工作。ARR机器上有没有相匹配的服务/网站就可以使用ARR?
但是,似乎如果我在服务器场上有服务,那么相同的服务应该在ARR机器上暴露相同的端点。
我不知道为什么这是真的需要或做错了什么。 它很愚蠢。因此,如果我有一些应用程序的农场,首先它必须部署到ARR机器,否则,由于ARR设置的机器上没有可用的服务/网页,会出现各种503,500,404等错误。
我不确定我是否缺少一些东西,但我真的很想让它像路由规则表一样工作。ARR机器上有没有相匹配的服务/网站就可以使用ARR?
但是,似乎如果我在服务器场上有服务,那么相同的服务应该在ARR机器上暴露相同的端点。
我不知道为什么这是真的需要或做错了什么。 它很愚蠢。因此,如果我有一些应用程序的农场,首先它必须部署到ARR机器,否则,由于ARR设置的机器上没有可用的服务/网页,会出现各种503,500,404等错误。
首先,确保 “代理” 功能启用...
IIS首页 - >应用程序请求路由 - >服务器代理设置 - >启用代理
然后添加重写规则到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可以在这里找到:
但其基本思路是上面列出。
嗨。代理当然是启用的。也许我不明白stopProcesing在这里做了什么,你能否详细说明它的作用?我之前阅读过这篇文章,事实上他们的场景似乎并不是建立在ARR机器上的工作网站之上,这是我的问题的关键。 –
我会奖励赏金,所以它当然不会消失。但它并不立即解决问题。 –
感谢赏金:)我仍然希望能在这里得到一些帮助。 “stopProcessing”所做的就是防止URLRewrite在匹配时读取更多规则。为简单起见,尝试向localhost添加一条规则: ',然后在浏览器中加载以下URL(http://localhost/appharbor/assets/images/stackoverflow-logo.png)。这应该演示ARR从除安装了ARR的服务器之外的服务器获取内容。 –
dana