使用通配符路由时偶尔会收到来自 Azure Front Door 的 421 响应代码

bra*_*ett 5 wildcard-subdomain azure http-status-code-421 azure-front-door azure-static-website-hosting

我们使用 Azure Front Door 为我们的白标静态网站提供服务,这意味着我们需要我们的客户能够通过独特的子域(例如cust1.domain.comcust2.domain.com)访问它。

我们*.domain.com通过 DNS 对 Front Door 实例进行 CNAME,映射路由*.domain.com并将其绑定到自定义*.domain.com通配符证书(未托管,不受支持)。该路由指向一个源组,该组又指向类似于 的“存储(静态网站)”源prod-storage.z14.web.core.windows.net

有时在 Safari 上,我们会收到如下所示的响应:

<h2>Our services aren't available right now</h2><p>We're working to restore all services as soon as possible. Please check back soon.</p>0a1LIYwAAAADIYjiE3LgzTLfw86bqHEd5Q0hHRURHRTE2MTAAYTk0OGVmNjEtMTk3NS00ZjA0LTkwMjgtOTgwY2I4YzllYzFl
Run Code Online (Sandbox Code Playgroud)

在查看网络选项卡时,我们看到响应实际上是一个421 Misdirected Request. 我的假设是它与此更新有关: https: //learn.microsoft.com/en-us/azure/frontdoor/front-door-faq#how-does-front-door-handle--domain-fronting - 行为 -

设置此流程以避免 Front Door 出现此新问题的正确方法是什么?据我所知,我们的案例有些独特,并且没有记录。

我见过的解决方案包括关闭 HTTP/2、为每个域创建单独的证书以及使用不同的 IP - 这些解决方案都无效,也不会随我们的解决方案扩展,因为我们需要不受限制地动态创建新的子域(即,以编程方式将它们添加到 AFD 是不现实的)。

bra*_*ett 10

我最终通过联系 Microsoft 支持并要求他们关闭域前置阻止来解决这个问题,根据我们的后续测试,这似乎已经完全解决了 Safari 上的问题。希望有更好的解决方案,但这目前对我们有用。

  • Azure 已关闭我们服务的域前置块,现在一切正常。不过,他们表示将在 2023 年 11 月 8 日重新启用它,因此我们需要在此之前找出根本原因。这似乎主要发生在我们使用 iPhone 的客户身上。 (3认同)
  • 作为后续,该问题是由于我们从 cdn.ourdomain.com 加载脚本,但随后向tenant.ourdomain.com 进行发布而引起的,两者都在同一个 Front Door 实例上使用相同的通配符证书。据我了解,HTTP2连接在POST上被重用,因此cdn.ourdomain.com的SNI名称和tenant.ourdomain.com的HTTP请求不匹配。这就是 Front Door 检测和阻止的内容。 (3认同)