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

Application gateway URL path-based routing always redirect to default backend pool

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

web app settings

直接进入dummyapiX.azurewebsites.de/servicehosts/dummyapiX.

可以打开网络应用

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

dummyapiX.azurewebsites.de/servicehosts/dummyapiX

但是应用程序网关总是重定向到默认后端池,因此我收到 404 错误。

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

后端健康显示所有健康状态。后端池指向 webapps FQDN。 httpsSettings 的 PickHostNameFromBackendAddress 和探测器的 PickHostNameFromBackendHttpSettings 设置为 true。在httpsSettings中没有配置其他Path相关的设置。

唯一基于路径的规则是:

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

首先,您可以确认您是否在您的网络应用程序设置中创建了虚拟目录。确保基于 URL 的规则映射到特定的后端池。使用侦听请求端口创建基本侦听器。创建并映射基于路径的规则并绑定到侦听器。从此 tutorial.

获取更多详细信息

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

参考:Error 404 : Web App Not Found – Azure Web App

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

所以代替:

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

应该是我的情况

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

现在一切正常