Azure Front Door:请求转到各个后端,为什么?

Azure Frontdoor: Requests go to invididual backends, why?

我已经设置了一个带有 2 个后端的 Azure Frontdoor 负载均衡器,托管了一个 Angular 应用程序。在浏览器的开发人员工具中查看网络流量时,我发现只有前几个对 *.html 和 *.js 文件的请求会转到负载均衡器。从 GET options 请求开始,所有后续请求似乎都直接进入后端 #2(下图中的红色部分):

这意味着,如果后端 #2 出现故障,客户端会收到 404 错误,并且不会自动重定向到后端 #1,除非用户使用 F5 重新加载浏览器 window。

我不确定 Angular 应用如何获得实际后端主机的 URL。我看不到任何可以提供此信息的 header 或 cookie。 login.html 的第一个请求的 header 看起来像这样 - 任何地方都没有后端 URL 的迹象:

我的问题是

  1. 客户端如何获取后端主机的URL?
  2. 有没有办法定义所有请求都通过负载均衡器?
  3. 这会是个好主意吗?或者这是“预期行为”,意味着用户将看到 404 错误并且必须手动重新加载页面?

它是执行此操作的应用程序,而不是 Azure 前门。该应用程序必须根据其托管位置和发出请求来构建 url。前门会将主机 header 设置为与应用服务的主机名相同。在那种情况下,应用程序会看到它的请求,就好像用户在浏览器中输入了它一样。您通常希望使用自定义主机名,例如neonapp-dev.yourcompanyname.com。当您这样做时,应用程序服务和前门都将配置自定义主机。配置前门时,您可以将其用作主机 header 而不是默认的应用服务主机名。然后一切都会正常工作,因为应用程序永远不会将应用程序服务名称视为主机 header.

更多详情https://docs.microsoft.com/en-us/azure/frontdoor/front-door-backend-pool#backend-host-header