基于应用程序网关 URL 路径的路由始终重定向到默认后端池



我在应用程序网关(ARM 模板(后面配置了 4 个 Web 应用:

  • dummyapi1.azurewebsites.de/servicehosts/dummyapi1
  • dummyapi2.azurewebsites.de/servicehosts/dummyapi2
  • dummyapi3.azurewebsites.de/servicehosts/dummyapi3
  • dummyapi4.azurewebsites.de/servicehosts/dummyapi4

网络应用设置

当我直接转到 dummyapiX.azurewebsites.de/servicehosts/dummyapiX 时,我可以打开 Web 应用程序。

我希望路由以这种方式工作:当我转到 https://PIPofApplicationGateway/servicehosts/dummyapiX 时,它应该重定向到

dummyapiX.azurewebsites.de/servicehosts/dummyapiX

但是应用程序网关始终重定向到默认后端池,因此出现 404 错误。

我创建了指向以下内容的自定义探针:

/
  • servicehosts/dummyapi1
  • /
  • servicehosts/dummyapi2
  • /
  • servicehosts/dummyapi3
  • /
  • servicehosts/dummyapi4

后端运行状况显示所有人的"正常状态"。后端池指向 Web 应用 FQDN。httpsSettings 的 PickHostNameFromBackendAddress 和探测器的 PickHostNameFromBackendHttpSettings 设置为 true。没有其他路径相关设置未在 httpsSettings 中配置。

唯一基于路径的规则是:

  • 默认后端池是 Dummyapi4
  • "/servicehosts/dummyapi1/*" to backendpooldummy1
  • "/servicehosts/dummyapi2/*" to backendpooldummy2
  • "/servicehosts/dummyapi3/*" to backendpooldummy3

有什么建议吗?根本原因可能是什么?

根本原因是规则中路径中的尾随"/"。

所以代替:

"/servicehosts/dummyapi1/*" to backendpooldummy1
"/servicehosts/dummyapi2/*" to backendpooldummy2
"/servicehosts/dummyapi3/*" to backendpooldummy3

应该在我的情况下

"/servicehosts/dummyapi1*" to backendpooldummy1
"/servicehosts/dummyapi2*" to backendpooldummy2
"/servicehosts/dummyapi3*" to backendpooldummy3

现在一切正常

首先,可以确认是否已在 Web 应用设置中创建虚拟目录。确保基于 URL 的规则映射到特定的后端池。使用侦听请求端口创建基本侦听器。创建并映射基于 Path 的规则并绑定到侦听器。从本教程中获取更多详细信息。

然后,您可以键入ipconfig /flushdns以在命令提示符控制台中清除 DNS 缓存。再次验证。

参考: 错误 404:找不到 Web 应用 – Azure Web 应用

最新更新