Azure应用服务始终开启,自定义域重定向未达到默认网页

时间:2017-06-23 14:55:46

标签: azure iis azure-web-sites

一旦没有为Web应用程序设置自定义域,Azure App Service AlwaysOn就能完美运行。一旦添加了自定义域以及URL重写规则以将所有传入请求重定向到它,应用程序在一段时间不活动后开始缓慢响应。日志显示AlwaysOn仍然使用azure域并获取HTTP 301响应,而不是尝试请求新URL。

没有自定义域的日志:

2017-06-20 17:17:02 ZZTESTSITE GET / X-ARR-LOG-ID=743965b6-d3e2-42b9-9353-7772f9fbc898 80 - ::1 AlwaysOn ARRAffinity=b5289afa9cd711b67c1fe9137a6e3ff232f80bd3fa1bd96e9fc89992472b4e57 - zztestsite.azurewebsites.net 200 0 0 11433 652 15

使用自定义域

进行日志记录
2017-06-21 13:28:52 ZZTESTSITE GET / X-ARR-LOG-ID=ffcd5992-5019-48ca-a386-76443a8c7226 80 - ::1 AlwaysOn ARRAffinity=b5289afa9cd711b67c1fe9137a6e3ff232f80bd3fa1bd96e9fc89992472b4e57 - zztestsite.azurewebsites.net 301 0 0 553 652 46

网址重写规则:

<rule name="Redirect requests from default azure websites domain to custom one" stopProcessing="true">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAny">
    <add input="{HTTP_HOST}" pattern="^zztestsite\.azurewebsites\.net$" />
  </conditions>
  <action type="Redirect" url="http://mycustomdomain.com" redirectType="Permanent" appendQueryString="false"/>
</rule>

此外,启用SSL并添加其他规则以将所有请求重定向到HTTPS后,也会出现同样的问题。

我该如何解决这个问题?我发现了两个可能的方向:

  1. 将AlwaysOn推送到ping自定义域(可能是https作为选项)
  2. 将URL重写规则更改为允许AlwaysOn ping天蓝域的规则,但所有其他域都应重定向
  3. 请告知。

2 个答案:

答案 0 :(得分:5)

尝试将此行添加到您的条件中:

<conditions>
  <add input="{HTTP_HOST}" pattern="^zztestsite\.azurewebsites\.net$" />
  <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
</conditions>

这告诉重定向到Always On ping。另请注意,我删除了MatchAny,因为您真的想要MatchAll(当您只有一个时无关紧要)。

有关更完整的示例,请参阅here。它将http重定向到https,但核心思想与Always On请求相同。这个例子是一个xdt变换,所以看起来与“直接”变换有点不同。配置。实际上,您可能会考虑使用此类xdt而不是污染您的web.config。

答案 1 :(得分:2)

最后我找到了适用的规则

<rule name="AlwaysOn agent requests without any redirections" stopProcessing="true">
  <match url="^$"/>
  <conditions>
    <add input="{HTTP_USER_AGENT}" pattern="^AlwaysOn$" />
  </conditions>
  <action type="None" />
</rule>

我把它作为第一条规则。然后其他规则遵循&#34; azure域到自定义域重定向&#34;和#34; HTTP到HTTPS&#34;。 大卫的回答很有帮助,但解决了一个不同的问题。