应用程序网关 URL 基于路径的路由总是重定向到默认后端池
Application gateway URL path-based routing always redirect to default backend pool
我在应用程序网关(ARM 模板)后面配置了 4 个 webapps:
- dummyapi1.azurewebsites.de/servicehosts/dummyapi1
- dummyapi2.azurewebsites.de/servicehosts/dummyapi2
- dummyapi3.azurewebsites.de/servicehosts/dummyapi3
- dummyapi4.azurewebsites.de/servicehosts/dummyapi4
web app settings
直接进入dummyapiX.azurewebsites.de/servicehosts/dummyapiX.
可以打开网络应用
我希望路由以这种方式工作:当我转到 https://PIPofApplicationGateway/servicehosts/dummyapiX 时,它应该重定向到
dummyapiX.azurewebsites.de/servicehosts/dummyapiX
但是应用程序网关总是重定向到默认后端池,因此我收到 404 错误。
我创建了指向以下内容的自定义探测器:
- /servicehosts/dummyapi1
- /servicehosts/dummyapi2
- /servicehosts/dummyapi3
- /servicehosts/dummyapi4
后端健康显示所有健康状态。后端池指向 webapps FQDN。 httpsSettings 的 PickHostNameFromBackendAddress 和探测器的 PickHostNameFromBackendHttpSettings 设置为 true。在httpsSettings中没有配置其他Path相关的设置。
唯一基于路径的规则是:
- 默认后端池是 dummyapi4
- "/servicehosts/dummyapi1/*" 到 backendpooldummy1
- "/servicehosts/dummyapi2/*" 到 backendpooldummy2
- "/servicehosts/dummyapi3/*" 到 backendpooldummy3
有什么建议吗?根本原因可能是什么?
首先,您可以确认您是否在您的网络应用程序设置中创建了虚拟目录。确保基于 URL 的规则映射到特定的后端池。使用侦听请求端口创建基本侦听器。创建并映射基于路径的规则并绑定到侦听器。从此 tutorial.
获取更多详细信息
然后,您可以在命令提示符控制台中键入ipconfig /flushdns
来清除DNS 缓存。再验证一下。
根本原因是规则路径中的尾随“/”。
所以代替:
"/servicehosts/dummyapi1/*" to backendpooldummy1
"/servicehosts/dummyapi2/*" to backendpooldummy2
"/servicehosts/dummyapi3/*" to backendpooldummy3
应该是我的情况
"/servicehosts/dummyapi1*" to backendpooldummy1
"/servicehosts/dummyapi2*" to backendpooldummy2
"/servicehosts/dummyapi3*" to backendpooldummy3
现在一切正常
我在应用程序网关(ARM 模板)后面配置了 4 个 webapps:
- dummyapi1.azurewebsites.de/servicehosts/dummyapi1
- dummyapi2.azurewebsites.de/servicehosts/dummyapi2
- dummyapi3.azurewebsites.de/servicehosts/dummyapi3
- dummyapi4.azurewebsites.de/servicehosts/dummyapi4
web app settings
直接进入dummyapiX.azurewebsites.de/servicehosts/dummyapiX.
可以打开网络应用我希望路由以这种方式工作:当我转到 https://PIPofApplicationGateway/servicehosts/dummyapiX 时,它应该重定向到
dummyapiX.azurewebsites.de/servicehosts/dummyapiX
但是应用程序网关总是重定向到默认后端池,因此我收到 404 错误。
我创建了指向以下内容的自定义探测器:
- /servicehosts/dummyapi1
- /servicehosts/dummyapi2
- /servicehosts/dummyapi3
- /servicehosts/dummyapi4
后端健康显示所有健康状态。后端池指向 webapps FQDN。 httpsSettings 的 PickHostNameFromBackendAddress 和探测器的 PickHostNameFromBackendHttpSettings 设置为 true。在httpsSettings中没有配置其他Path相关的设置。
唯一基于路径的规则是:
- 默认后端池是 dummyapi4
- "/servicehosts/dummyapi1/*" 到 backendpooldummy1
- "/servicehosts/dummyapi2/*" 到 backendpooldummy2
- "/servicehosts/dummyapi3/*" 到 backendpooldummy3
有什么建议吗?根本原因可能是什么?
首先,您可以确认您是否在您的网络应用程序设置中创建了虚拟目录。确保基于 URL 的规则映射到特定的后端池。使用侦听请求端口创建基本侦听器。创建并映射基于路径的规则并绑定到侦听器。从此 tutorial.
获取更多详细信息然后,您可以在命令提示符控制台中键入ipconfig /flushdns
来清除DNS 缓存。再验证一下。
根本原因是规则路径中的尾随“/”。
所以代替:
"/servicehosts/dummyapi1/*" to backendpooldummy1
"/servicehosts/dummyapi2/*" to backendpooldummy2
"/servicehosts/dummyapi3/*" to backendpooldummy3
应该是我的情况
"/servicehosts/dummyapi1*" to backendpooldummy1
"/servicehosts/dummyapi2*" to backendpooldummy2
"/servicehosts/dummyapi3*" to backendpooldummy3
现在一切正常