Soc*_*j07 6 azure azure-front-door
我们有 2 个应用程序服务:foo.azurewebsites.net和bar.azurewebsites.net 并为两个站点配置了源组。我们希望前门进行基于路径的路由:即:
myfd.z01.azurefd.net/foo -> foo.azurewebsites.net
myfd.z01.azurefd.net/bar -> bar.azurewebsites.net
Run Code Online (Sandbox Code Playgroud)
Patterns to match我们可以将其配置为分别在路由 as/foo/*和上使用/bar/*。这按预期工作。
接下来,我们要重写 URL,以便我们不会将初始值/foo或/bar路径发送到 Web 应用程序。换句话说,当前设置会产生以下结果:
myfd.z01.azurefd.net/foo/abc -> foo.azurewebsites.net/foo/abc
myfd.z01.azurefd.net/bar/def -> bar.azurewebsites.net/bar/def
Run Code Online (Sandbox Code Playgroud)
我们想要的是:
myfd.z01.azurefd.net/foo/abc -> foo.azurewebsites.net/abc
myfd.z01.azurefd.net/bar/def -> bar.azurewebsites.net/def
Run Code Online (Sandbox Code Playgroud)
所以我们设置一个重写URL规则如下:
| 环境 | 价值 |
|---|---|
| 行动 | 网址重写 |
| 源模式 | /foo/ |
| 目的地 | / |
| 保留不匹配的路径 | Yes |
然而,这似乎不起作用。在AzureDiagnostics日志中我们可以看到规则正在触发,但 URL 没有被重写 - 它仍然包含/foo/. 我们还缺少什么吗?
我遇到了同样的问题,经过一些实验,我得出了 Azure 前门(预览)标准/高级当前状态的以下行为:
如果在端点管理器中将路由配置为匹配子路径,例如/foo/*,路由到特定源,则启用的 UrlRewrite 规则仅应用于以下路径/foo。例如
Route:
Pattern to match: /foo/*
OriginGroup: Foo
Rule: UrlRewrite
Source pattern "/"
Destination "/bar/"
Preserve unmatched path: true
Run Code Online (Sandbox Code Playgroud)
将导致从eg 重写/foo/baz为/foo/bar/baz,因此不适用于给定的问题。但是,有两种选择可以实现所需的结果。
Origin 路径会覆盖Pattern 以进行匹配,因此它本身已经是一个 UrlRewrite。尽管如此,通过 Azure 门户 UI 不允许仅设置/为路径,但通过az afd route updateCLI 可以并且有效:
2022 更新- 您现在还可以通过 Azure 门户将“/”设置为原始路径
这里不需要额外的规则。
仅配置一个路由来匹配所有请求/*并为默认源提供服务。对此路由应用一个规则集,其中包含每个源的源组覆盖和 * Url 重写 * 规则:

| 归档时间: |
|
| 查看次数: |
4012 次 |
| 最近记录: |