来自 Azure 前门的 503 错误或空白页
Posted
技术标签:
【中文标题】来自 Azure 前门的 503 错误或空白页【英文标题】:503 Errors or Blank Page from Azure Front Door 【发布时间】:2021-11-22 07:35:30 【问题描述】:我已经阅读了下面的链接并延长了超时时间,禁用了 Origin/Azure Front Door 上的压缩和规则集规则以从字节范围请求的请求中删除接受编码。但是,我仍然会收到这些随机的 503 错误或空白页。
https://docs.microsoft.com/en-us/azure/frontdoor/front-door-troubleshoot-routing
在我的 Web 应用程序中,我使用自己的证书添加了自定义域 (app.contoso.com)。
在我的 Front Door 中,我添加了带有我自己的证书的自定义域 (app.contoso.com),并设置了后端池和路由规则。
在更新后端,我将后端主机标头留空,因为我希望它能够重定向到自定义域而不是显示 Web 应用程序 url。
在我的路由规则中,我设置了以下内容
我已严格按照 Azure 提供的说明进行操作,但仍会从 Azure Front Door 收到随机 503 错误或空白页。当我从前门收到 503 错误或来自自定义域的空白页面时,我可以确认我的 Web 应用程序 (contoso.azurewebsites.net) 正在运行。我还确保我在 Web 应用程序和前门自定义域上使用了相同的 SSL 证书。
在我的 DNS 中,我映射了以下内容
app.contoso.com CNAME contoso.azurefd.net
有什么我错过的吗,或者有人有解决办法吗?
跟进
我尝试启用和禁用证书使用者名称验证并将发送/接收超时从 30 更改为 240 或从 240 更改为 30,但仍然遇到相同的问题。
更新:它给出空白页或 503 错误(见下面的截图)
我在多个后端 Web 应用程序前面设置了 FrontDoor。我注意到每天都会出现许多随机 503 错误。请求本身是有效的,并且重试通常可以工作,但是,失败的初始请求并没有命中后端 Web 应用程序。发生错误时的后端健康度也是 100%,并且不能超时,因为错误是即时的(超时也延长到 240 秒)。 FrontDoor 本身似乎存在某种健康问题,但没有提及任何健康问题。
【问题讨论】:
能否请您帮助我们知道您是否在 Azure 前门中配置此设置,如下 Microsoft 文档 [1]:i.stack.imgur.com/UFi0r.png @AjayKumarGhose-MT 我已经更新了帖子。请参阅跟进部分。最初,30 不起作用,所以我根据 Azure 故障排除文章 (docs.microsoft.com/en-us/azure/frontdoor/…) 更改为 240 【参考方案1】:我从前门观察到我认为是随机的 503 错误,并最终将其缩小到一组特定的情况 - 在 Azure 门户中,应用服务客户端证书模式设置为必需或允许,并且请求是一个大小超过 100KB 的 HTTP POST。
我的经验是,问题不在 Front Door 中 - 它只是在报告问题。问题是 Azure 应用服务托管的应用程序从未收到 Front Door 发送的请求,因此没有响应 - 导致 503 超时。增加 Front Door 中的超时不会解决问题。
从我所读到的根本原因是“当服务器发送 SSL 重新协商请求时,客户端已经发送了太多数据供服务器缓冲,然后才能接收到 SSL 重新协商响应”(引自此处: https://github.com/dotnet/runtime/issues/17336)
有一些解决方法可能有助于您的场景,包括设置 ServicePointManager.Expect100Continue = true(从这里https://github.com/dotnet/runtime/issues/17336)或执行 HEAD 请求,然后执行 POST(记录在此处:https://github.com/fasigpt/appserviceclientcertauth/blob/fa0862dcd44ae570594e21f4bbab4f328cd5eadb/clientcert/Program.cs#L35)
但我发现可靠消除 Front Door 报告的 503 错误的唯一方法是在 Azure 门户的应用服务设置部分将客户端证书模式设置为“忽略”。这可能适合也可能不适合您的特定场景,YMMV - 我认为这并不理想,但就我而言,它不如间歇性(但也相当频繁)503 错误那么糟糕。
【讨论】:
这很有趣!我们的客户端证书模式已在 Azure 门户的应用服务设置部分设置为“忽略”。但是,我们仍然是间歇性的 503 错误。其他两个建议更倾向于 dotnet,我们使用的是 php。【参考方案2】:我在本地环境中尝试过,对我来说效果很好,然后是MS DOC。
这是我的配置:
确保您已将您的自定义域正确添加为前端主机名。
在后端池中,我尝试将间隔设置为 5(小值),以便前门知道后端是否已关闭,并且不应再将流量路由到该后端
在路由规则中,确保您已检查了所有前端/域。
之后,您可以通过点击 frontdoor host
来运行。
有关详细信息,请参阅此 Microsoft 文档:Add a custom domain to your Front Door。
【讨论】:
我已按照相应的步骤进行操作。我得到了前门页面,但有时它一直给出空白或 503 错误。看后续,我已经编辑了问题。 能否请您参考 MS Q&A 中的此讨论Azure Front Door returns a 503 Service Unavailable 在将我的问题发布到此处之前,我已经阅读了您提供的链接。我也厌倦了这个链接中的建议,但仍然没有成功。 ***.com/questions/66963852/…以上是关于来自 Azure 前门的 503 错误或空白页的主要内容,如果未能解决你的问题,请参考以下文章