你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

如何将请求与路由配置匹配

Azure Front Door 中的路由定义了传入请求到达 Azure Front Door 边缘时如何处理流量。 路由设置在域和源组之间建立关联。 通过使用高级功能(例如“要匹配的模式”和“规则集”),可以对流向后端资源的流量进行精细的控制。

注意

当使用 Front Door 规则集时,可以配置规则以替代请求的原点组。 由规则集设置的原点组将替代本文中所述的路由过程。

重要

Azure Front Door(经典版)将于 2027 年 3 月 31 日停用。 为了避免任何服务中断,请务必在 2027 年 3 月之前将 Azure Front Door(经典版)配置文件迁移到 Azure Front Door 标准层或高级层。 有关详细信息,请参阅 Azure Front Door(经典版)停用

当请求到达 Azure Front Door(经典)边缘时,首先需要确定如何将匹配的请求路由到后端资源,然后在路由配置中执行定义的操作。 本文档介绍了 Front Door 如何确定在处理请求时要使用的路由配置。

Front Door 路由配置结构

Front Door 传递规则由两个主要部分组成:“左侧”和“右侧”。 Front Door 将传入的请求与路由的左侧相匹配,而右侧则定义处理请求的方式。

传入的匹配项(左侧)

以下属性确定传入的请求是否与传递规则(左侧)匹配:

  • HTTP 协议 - HTTP 或 HTTPS
  • 域 - 例如:www.foo.com、*.bar.com
  • 路径 - 例如:/*、/users/*、/file.gif

这些属性会在内部扩展,因此协议/域/路径的每种组合都是潜在的匹配集。

路由决策(右侧)

决定如何处理请求取决于是否为路由启用了高速缓存。 如果缓存的响应不可用,则将请求转发到相应的原点。

路由匹配

本节介绍 Front Door 如何将请求与传递规则匹配。 基本原则是 Front Door 始终通过评估“左侧”属性(按顺序为协议、域和路径)来匹配最具体的请求

前端主机匹配

Azure Front Door 按照以下步骤来匹配前端主机:

  1. 检查前端主机上是否具有精确匹配的路由。
  2. 如果未找到精确匹配项,则请求将被拒绝,并出现“404:错误请求”错误。

下表描述了三种不同的传递规则及其前端主机和路径:

路由规则 前端主机 路径
A foo.contoso.com /*
B foo.contoso.com /users/*
C www.fabrikam.com,foo.adventure-works.com /*、/images/*

下表显示了上表中传递规则的匹配结果:

传入前端主机 匹配的传递规则
foo.contoso.com A, B
www.fabrikam.com C
images.fabrikam.com 错误 404: 错误的请求
foo.adventure-works.com C
contoso.com 错误 404: 错误的请求
www.adventure-works.com 错误 404: 错误的请求
www.northwindtraders.com 错误 404: 错误的请求

路径匹配

Azure Front Door 确定特定前端主机并筛选可能的传递规则后,会根据请求路径选择传递规则。 使用以下逻辑:

  1. 检查是否存在与请求路径精确匹配的传递规则。
  2. 如果未找到精确匹配项,请查找具有匹配通配符路径的传递规则。
  3. 如果未找到匹配的路径,则请求将被拒绝,并出现“404:错误请求”错误。

注意

通配符 * 仅适用于在其之后没有任何其他字符的路径。 此外,通配符 * 前面必须有斜杠 /。 没有通配符的路径被视为精确匹配路径。 以斜杠 / 结尾的路径也是完全匹配的路径。 确保路径遵循这些规则以避免错误。

注意

  • 没有通配符的路径被视为精确匹配路径。 以 / 结尾的路径也是精确匹配路径。
  • 路径模式不区分大小写。 例如,/FOO/foo 被视为重复项,不允许出现在“要匹配的模式”设置中。

下表列出了传递规则及其前端主机和路径组合:

路由规则 前端主机 路径
A www.contoso.com /
B www.contoso.com /*
C www.contoso.com /ab
D www.contoso.com /abc
E www.contoso.com /abc/
F www.contoso.com /abc/*
G www.contoso.com /abc/def
H www.contoso.com /path/

下表显示哪个传递规则与 Azure Front Door 边缘的传入请求匹配:

传入的请求 匹配的路由
www.contoso.com/ A
www.contoso.com/a B
www.contoso.com/ab C
www.contoso.com/abc D
www.contoso.com/abzzz B
www.contoso.com/abc/ E
www.contoso.com/abc/d F
www.contoso.com/abc/def G
www.contoso.com/abc/defzzz| F
www.contoso.com/abc/def/ghi| F
www.contoso.com/path B
www.contoso.com/path/ H
www.contoso.com/path/zzz B

警告

如果没有精确匹配的前端主机 (/*) 的传递规则,则不会匹配任何传递规则。

示例配置:

路由 主机 路径
A profile.contoso.com /api/*

匹配表:

传入的请求 匹配的路由
profile.domain.com/other 无。 错误 404: 错误的请求

路由决策

Azure Front Door 与传递规则匹配后,会决定如何处理请求。 如果有可用的缓存响应,则会将其发回客户端。

如果为匹配的传递规则配置了规则集,则会按顺序对其进行处理。 规则集可以替代路由,方法是将流量强制路由到特定的原点组。 如果没有定义规则集,则会将请求按原样转发到原点组。

如果 Azure Front Door(经典)没有缓存响应,则会检查 URL 重写配置。 如果未定义自定义转发路径,则会将请求转发到配置的后端池中的相应后端。 如果定义了自定义转发路径,则会对请求路径进行相应的更新,然后转发到后端。

后续步骤