Azure - Web 角色 - 根据主机过滤请求

Azure - Web Roles - Filtering out requests based on host

最近我们遇到了一个问题,即我们在 Azure 上的 Web 角色获得了一个之前与 piratebay 跟踪器相关联的 IP 地址。这意味着大约 5 000 000 个请求是 404。我认为是 DNS 服务器的问题。

我想做的是过滤掉指向与我们网站不同的主机的请求。是否可以通过

中的 hostHeader 属性实现此目的
<ServiceDefinition name="AB.AzureSite" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-06.2.4">
  <WebRole name="AllBlacksdotcom" vmsize="Medium">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1"  hostHeader=""/>
        </Bindings>
      </Site>
    </Sites>

我们希望完全避免请求到达我们的站点(例如针对主机 track.thepiratebay.org 的请求)。这可能吗?

没有办法完全skip /turn off 处理不需要的请求。然而,使用 hostHeader 属性会让你与一些 trade-offs 非常接近。检查 documentation here

至少有一个问题:

  • 当您使用主机 header 时,您的网站将 回复请求 有了这个 header。

  • 不能hostHeader属性中使用通配符。

该属性直接应用于 IIS 中网站的 host header 绑定 属性。因此 - 不支持通配符。

因此,只有描述您在 hostHeader 中定义的内容的请求才会出现在您的网站上。然而,其余请求无论如何都会落在 IIS 中的 Default Web Site 上。

您可以通过 start-up task (some example for changing IIS settings via Startup Tasks) 关闭 Default Web Site

如果您处于主机 header 级别,流量已经到达您的角色实例。在此之前阻止流量的唯一方法是在您的端点上使用访问控制列表 (ACL)。

如果问题完全基于您碰巧最终使用的特定 IP 地址,您可以删除并重新部署您的云服务包,这将分配一个新的 IP 地址。