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 update
CLI 可以并且有效:
2022 更新- 您现在还可以通过 Azure 门户将“/”设置为原始路径
这里不需要额外的规则。
仅配置一个路由来匹配所有请求/*
并为默认源提供服务。对此路由应用一个规则集,其中包含每个源的源组覆盖和 * Url 重写 * 规则:
归档时间: |
|
查看次数: |
4012 次 |
最近记录: |