Azure 前门 URL 重写

Posted

技术标签:

【中文标题】Azure 前门 URL 重写【英文标题】:Azure Front Door Url Rewrite 【发布时间】:2021-07-29 20:54:58 【问题描述】:

假设我们有一个基于 Azure FnApps 的微服务列表 - 用户服务、搜索服务、产品服务等...... 每个服务都是全局部署的。 例如:

user-service-uk.azurewebsites.net
user-service-west-us.azurewebsites.net
search-service-south-east-asia.azurewebsites.net
search-service-uk.azurewebsites.net
search-service-east-us.azurewebsites.net
..... ETC

我们有一个 APIM 接口,其中包含所有 api 操作并执行 AuthZ 和 AuthN。所以这不能被删除或替换。

myapis.azure-apis.net/user
myapis.azure-apis.net/search
myapis.azure-apis.net/product

在这种情况下进行地理交通管理的最佳方法是什么。

我们当前的方法是使用 APIM 策略。

<choose>
            <when condition="@("West US".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                <set-backend-service base-url="http://user-service-west-us.azurewebsites.net/" />
            </when>
            <when condition="@("South East Asia".Equals(context.Deployment.Region, StringComparison.OrdinalIgnoreCase))">
                <set-backend-service base-url="http://user-service-south-east-asia.azurewebsites.net/" />
            </when>
            <otherwise>
                <set-backend-service base-url="https://user-service-west-us.azurewebsites.net" />
            </otherwise>
        </choose>

但随着更多微服务的增长以及我们的应用进入更多地区,我们正面临着政策维护的噩梦。

我们探索了 Azure Front Door,但 URL 重写不允许我们携带匹配模式的后缀。

例如: 对于网址,https:myapi.azure-afd.net/user 当 url 与 /user/* Custom Rewrite/* 匹配时,有没有办法设置 Routing-Tab 的 URLRewrite(表示除 /user 之外的整个 url-suffix)

PS:

我们想到的另一种方法是为每个微服务创建一个 Azure 流量管理器配置文件 例如:

https://user-service.trafficmanager.net
https://search-service.trafficmanager.net
https://product-service.trafficmanager.net

但是,随着 100 多个新微服务的出现,我们最终会遇到大量 ATM 配置文件。

【问题讨论】:

回复有用吗? 【参考方案1】:

据我所知,要处理地理流量管理,您可以使用带有geographic traffic-routing method 的 Azure 流量管理器。您可以选择根据每个端点的特定地理位置分配流量。不能在两个端点中指定相同的位置。

在这种情况下,您需要创建三个流量管理器配置文件和多个端点来区分客户端的区域。流量管理器使用 DNS 查询的源 IP 地址来确定用户查询的区域。

https://user-service.trafficmanager.net ---> endpoints 
user-service-uk.azurewebsites.net, user-service-west-us.azurewebsites.net,...

https://search-service.trafficmanager.net ---> endpoints 
search-service-south-east-asia.azurewebsites.net, search-service-uk.azurewebsites.net,...

https://product-service.trafficmanager.net ---> endpoints
product-service-south-east-asia.azurewebsites.net,...

【讨论】:

以上是关于Azure 前门 URL 重写的主要内容,如果未能解决你的问题,请参考以下文章

Azure 网站 - 使用 web.config 重写 URL 不起作用

Azure CDN URL使用令牌身份验证和Blob存储SAS重写规则

如何使用 WordPress 配置 Windows Azure 以进行 URL 重写?

如何在 Windows Azure 上重写 Codeigniter 的 index.php

Azure 前门通过同一域下的路径支持多个 Web 应用程序

使用Azure Web App上的web.config将子域重写到目录