1

我有 2 个具有不同路径的 WebAPI,如下所示:

xx.xxx.xx.xxx/用户

xx.xxx.xx.xxx/角色

yy.yyy.yy.yyy/文件

我尝试使用基于路径的重定向设置 Azure App Gateway 以实现此目的:

myApiGateway.com/v1/Users

myGateway.com/v1/Roles

myGateway.com/v1/Documents

但在后端池中,我无法使用 xx.xxx.xx.xxx/path 等额外路径配置 IP(或 FQDN)。

截屏

更多信息更新:

在基于路径的规则配置中,它看起来像

/v1/Users/* -> 池 X (xx.xxx.xx.xxx)

/v1/Roles/* -> 池 X (xx.xxx.xx.xxx)

/v1/Documents/* - > 池 Y (yy.yyy.yy.yyy)

我的前端 API 使用者需要一个且唯一的 URL,例如

http://myApiGateway.com/v1/

他们不希望访问http://myApiGateway.com/v1/api-x/获取用户和角色,访问http://myApiGateway.com/v1/api-y/获取文档。

现在我在想 api-x 和 api-y 在某种程度上不是关于设计的最佳实践。

对此有任何想法、建议和建议,我将不胜感激。谢谢!

4

3 回答 3

0

您应该配置基于路径的路由/v1/Users/*您应该有一个名为 X 的后端池,其中的服务器可以接受对和的请求/v1/Roles/*。您应该有另一个名为 Y 的后端池,其中的服务器可以接受来自 URI path 的请求/v1/Documents/*。然后,您可以让一个侦听器接受来自 的流量http://myapiGateway.com。然后,您将添加具有 3 条路径的基于路径的路由规则 - 将流量定向到池 X 和/v1/Users/*后端池 Y。/v1/Roles/*/v1/Documents/*

于 2018-05-08T01:13:28.437 回答
0

我通过为每条路由使用不同的 HTTP 设置记录来实现这一点。在 HTTP 设置中还有一个“路由”属性,该属性仅在 Powershell 中可见。您可以参考这篇文章了解一些简报。

所以基本描述如下:

  • “/用户”路线

Backend Pool: xx.xxx.xx.xxx HttpSettings.Route: "/Users" Path-based rule: "/v1/Users/*

  • “/角色”路线

Backend Pool: xx.xxx.xx.xxx HttpSettings.Route: "/Roles" Path-based rule: "/v1/Roles/*

  • “/文档”路径

Backend Pool: yy.yyy.yy.yyy HttpSettings.Route: "/Documents" Path-based rule: "/v1/Documents/*

如果我有另一个在根级别服务的“Tickets”API,我将拥有:

Backend Pool: zz.zzz.zz.zzz HttpSettings.Route: "/" Path-based rule: "/v1/Tickets/*

于 2018-05-29T04:40:00.250 回答
0

应用程序网关的后端池只能是 IP 或 FQDN。我认为您需要的是基于路径的重定向:https ://docs.microsoft.com/en-us/azure/application-gateway/tutorial-url-redirect-powershell

于 2018-04-23T08:15:04.113 回答