为应用程序网关中的后端池隐藏 .Azurewebsites.net

Hiding .Azurewebsites.net for backend pools in Application Gateway

我们为基于路径的路由和 SSL 卸载设置了一个 azure 应用程序网关,并且我们有多个指向 azure web 应用程序的后端池。 我们希望阻止人们直接使用原始 .azurewebsite.net URL 访问网络应用程序。这是一个非常普遍的要求,如果在 url 中使用“.azurewebsites.net”或重定向到实际域,则可以通过阻止访问轻松实现。但是当涉及应用程序网关时,这是不可行的,因为运行状况探测将使用 .azurewebsites.net URL 并且域名仅在应用程序网关级别使用。

有人有针对上述情况的解决方案吗?

您可以将默认的 Azure 域重定向到您的实际域,使用 URL 重写排除运行状况探测 URL。探测路径不需要包含主机名。例如,/healthprobes.

<rewrite>
  <rules>
    <rule name="RedirectToActualHost" stopProcessing="true">
      <match url="(.)*" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="^your_default_auzre_domain$" />
        <add input="{REQUEST_URI}" pattern="^your_probes_path$" negate="true" />
      </conditions>
      <action type="Redirect" url="http://your_actual_host/{R:0}" />
    </rule>
  </rules>
</rewrite>

我通过使用应用程序服务的 IP 限制(网络下)并添加了应用程序网关的 IP 来实现这一点,因此任何其他 IP 地址都被阻止,即会收到 403。应用程序网关运行状况探测仍然会通过,因为IP已被列入白名单