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

规则集操作

Azure Front Door 规则集由具有匹配条件和操作组合的规则组成。 本文详细介绍了可在规则集中使用的操作。 操作定义了应用于匹配条件所识别的请求类型的行为。 在一个规则集中,一个规则最多可以有五个操作。 Front Door 还支持规则集操作中的服务器变量

以下操作可用于规则集中:

路由配置替代

路由配置替代操作用于替代请求的源组或缓存配置。 您可以选择替代或遵从路由中指定的源组配置。 但是,替代路由配置时,必须配置缓存。 否则,请求的缓存将被禁用。

你还可以针对特定请求替代文件的缓存方式,包括:

  • 替代由源指定的缓存行为。
  • 使用查询字符串参数生成请求的缓存密钥的方式。
  • 生存时间 (TTL) 值,该值控制内容在缓存中保留多长时间。

属性

属性 支持的值
替代源组
  • 是:替代用于请求的源组。
  • 否:使用路由中指定的源组。
Caching
  • 启用:强制为请求启用缓存。
  • 禁用:强制为请求禁用缓存。

当“替代源组”设置为“是”时,请设置以下属性:

属性 支持的值
源组 请求应路由到的源组。 此设置会替代 Front Door 终结点路由中指定的配置。
转发协议 Front Door 将请求转发到源时使用的协议。 支持的值为“仅限 HTTP”、“仅限 HTTPS”、“匹配传入的请求”。 此设置会替代 Front Door 终结点路由中指定的配置。

当“缓存”设置为“启用”时,请设置以下属性:

属性 支持的值
查询字符串缓存行为
  • 忽略查询字符串:生成缓存键时不考虑查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IgnoreQueryString
  • 使用查询字符串:每个唯一的 URL 都有其自己的缓存键。 在 ARM 模板中,使用 UseQueryStringqueryStringCachingBehavior
  • 忽略指定的查询字符串:在生成缓存键时,排除参数中指定的查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IgnoreSpecifiedQueryStrings
  • 包括指定的查询字符串:在生成缓存键时,包括参数中指定的查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IncludeSpecifiedQueryStrings
查询参数 查询字符串参数名称的列表,用逗号分隔。 仅当“查询字符串缓存行为”设置为“忽略指定的查询字符串”或“包括指定的查询字符串”时才设置此属性。
压缩
  • 启用:Front Door 在边缘动态压缩内容,从而更快地做出响应。 有关详细信息,请参阅文件压缩。 在 ARM 模板中,将 isCompressionEnabled 属性设置为 Enabled
  • 已禁用。 Front Door 不执行压缩。 在 ARM 模板中,将 isCompressionEnabled 属性设置为 Disabled
缓存行为
  • 遵从源:Front Door 始终遵从源响应头指令。 如果缺少源指令,Front Door 会缓存 1 到 3 天内任何位置的内容。 在 ARM 模板中,将 cacheBehavior 属性设置为 HonorOrigin
  • 始终替代:用操作中指定的值替代从原点返回的 TTL 值。 仅当响应可缓存时才会应用此行为。 在 ARM 模板中,将 cacheBehavior 属性设置为 OverrideAlways
  • 如果缺少源值则替代:如果没有 TTL 值从源返回,则规则会将 TTL 设置为操作中指定的值。 仅当响应可缓存时才会应用此行为。 在 ARM 模板中,将 cacheBehavior 属性设置为 OverrideIfOriginMissing
缓存持续时间 当缓存行为设置为 Override alwaysOverride if origin missing 时,这些字段必须指定要使用的缓存持续时间。 最长持续时间为 366 天。 仅当“缓存行为”设置为“始终替代”或“如果缺少源值则替代”时才设置此属性。
  • 在 Azure 门户中:指定天数、小时数、分钟数和秒数。
  • 在 ARM 模板中:使用 cacheDurationd.hh:mm:ss 格式指定持续时间。

示例

在此示例中,我们将所有匹配的请求路由到名为 MyOriginGroup 的源组,而不考虑 Front Door 终结点路由中的配置。

Portal screenshot showing origin group override action.

在此示例中,我们将设置缓存键,以包括一个名为 customerId 的查询字符串参数。 将启用压缩,并遵从源的缓存策略。

Portal screenshot showing cache key query string action.

在此示例中,对于尚未指定缓存持续时间的匹配请求,我们将缓存过期时间替代为 6 小时。 Front Door 在确定缓存键时将忽略查询字符串,并将启用压缩。

Portal screenshot showing cache expiration action.

修改请求标头

使用修改请求头操作,在请求发送到源时修改请求中的标头。

属性

属性 支持的值
运算符
  • 追加:将指定的标头添加到具有指定值的请求中。 如果该标头已存在,则会使用字符串串联将该值追加到现有标头值。 无需添加分隔符。 在 ARM 模板中,使用 AppendheaderAction
  • 覆盖:将指定的标头添加到具有指定值的请求中。 如果该标头已存在,则指定的值将替代现有值。 在 ARM 模板中,使用 OverwriteheaderAction
  • 删除:如果规则中指定的标头已存在,则会从请求中删除该标头。 在 ARM 模板中,使用 DeleteheaderAction
标头名称 要修改的标头名称。
标头值 要追加或覆盖的值。

示例

在此示例中,我们将值 AdditionalValue 追加到 MyRequestHeader 请求标头。 如果原点将响应标头设置为值 ValueSetByClient,则在应用此操作后,请求标头的值将为 ValueSetByClientAdditionalValue

Portal screenshot showing modify request header action.

注意

某些 Azure Front Door 保留标头无法通过规则引擎操作进行修改,包括修改请求标头和响应标头的操作。 无法修改以下列表中的保留标头以及前缀为 x-ecx-fd 的任何标头。

  • Accept-Ranges
  • Host
  • Connection
  • Content-Length
  • Transfer-Encoding
  • TE
  • Last-Modified
  • Keep-Alive
  • Expect
  • Upgrade
  • If-Modified-Since
  • If-Unmodified-Since
  • If-None-Match
  • If-Match
  • Range
  • If-Range
  • X-Ms-Via
  • X-Ms-Force-Refresh
  • X-MSEdge-Ref
  • Warning
  • Forwarded
  • Via
  • X-Forwarded-For
  • X-Forwarded-Proto
  • X-Forwarded-Host
  • X-Azure-RequestChain
  • X-Azure-FDID
  • X-Azure-RequestChainv2
  • X-Azure-Ref

修改响应标头

使用修改响应头操作来修改响应中存在的标头,然后将它们返回到客户端。

属性

属性 支持的值
运算符
  • 追加:将指定的标头添加到具有指定值的响应中。 如果该标头已存在,则会使用字符串串联将该值追加到现有标头值。 无需添加分隔符。 在 ARM 模板中,使用 AppendheaderAction
  • 覆盖:将指定的标头添加到具有指定值的响应中。 如果该标头已存在,则指定的值将替代现有值。 在 ARM 模板中,使用 OverwriteheaderAction
  • 删除:如果规则中指定的标头已存在,则会从响应中删除该标头。 在 ARM 模板中,使用 DeleteheaderAction
标头名称 要修改的标头名称。
标头值 要追加或覆盖的值。

示例

在此示例中,我们先从响应中删除名为 X-Powered-By 的标头,然后再将其返回到客户端。

Portal screenshot showing modify response header action.

注意

某些 Azure Front Door 保留标头无法通过规则引擎操作进行修改,包括修改请求标头和响应标头的操作。 无法修改以下列表中的保留标头以及前缀为 x-ecx-fd 的任何标头。

  • Accept-Ranges
  • Host
  • Connection
  • Content-Length
  • Transfer-Encoding
  • TE
  • Last-Modified
  • Keep-Alive
  • Expect
  • Upgrade
  • If-Modified-Since
  • If-Unmodified-Since
  • If-None-Match
  • If-Match
  • Range
  • If-Range
  • X-Ms-Via
  • X-Ms-Force-Refresh
  • X-MSEdge-Ref
  • Warning
  • Forwarded
  • Via
  • X-Forwarded-For
  • X-Forwarded-Proto
  • X-Forwarded-Host
  • X-Azure-RequestChain
  • X-Azure-FDID
  • X-Azure-RequestChainv2
  • X-Azure-Ref

URL 重定向

使用 URL 重定向操作可将客户端重定向到新 URL。 从 Front Door 向客户端发送重定向响应。 Azure Front Door 支持使用 {url_path:seg#} 服务器变量动态捕获 URL 路径,并通过 {url_path.tolower}{url_path.toupper} 将 URL 路径转换为小写或大写。 有关详细信息,请参阅服务器变量

属性

属性 支持的值
重定向类型 要返回给请求方的响应类型。
  • 在 Azure 门户中:“已找到”(302)、“已移动”(301)、“临时重定向”(307)、“永久重定向”(308)。
  • 在 ARM 模板中:FoundMovedTemporaryRedirectPermanentRedirect
重定向协议
  • 在 Azure 门户中:Match RequestHTTPHTTPS
  • 在 ARM 模板中:MatchRequestHttpHttps
目标主机 要将请求重定向到的主机名。 留空会保留传入主机。
目标路径 要在重定向中使用的路径。 包含前导 /。 留空会保留传入路径。
查询字符串 重定向中使用的查询字符串。 请勿包含前导 ?。 留空会保留传入的查询字符串。
目标片段 要在重定向中使用的片段。 留空会保留传入片段。

示例

在此示例中,我们将请求重定向到 https://contoso.com/exampleredirection?clientIp={client_ip},同时保留片段。 使用 HTTP 临时重定向 (307)。 客户端的 IP 地址通过使用 client_ip 服务器变量来代替 URL 中的 {client_ip} 令牌。

Portal screenshot showing URL redirect action.

URL 重写

使用 URL 重写操作可以重写路由到原点的请求的路径。 Azure Front Door 支持使用 {url_path:seg#} 服务器变量动态捕获 URL 路径,并通过 {url_path.tolower}{url_path.toupper} 将 URL 路径转换为小写或大写。 有关详细信息,请参阅服务器变量

属性

属性 支持的值
源模式 定义要替换的 URL 路径中的源模式。 当前,源模式使用基于前缀的匹配。 若要匹配所有 URL 路径,请使用正斜杠(/)作为源模式值。
目标 定义要在重写中使用的目标路径。 目标路径会覆盖源模式。
暂留不匹配的路径 如果设置为“是”,则会将源模式后面的剩余路径追加到新的目标路径。

示例

在此示例中,我们将所有请求重写到路径 /redirection,并且不保留路径的其余部分。

Portal screenshot showing URL rewrite action.

重要

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

在 Azure Front Door(经典)中,一个规则引擎最多由 25 个规则组成,其中包含匹配条件和关联操作。 本文详细说明了可以在规则中定义的各项操作。

操作定义了要应用于一个或一组匹配条件的请求类型的行为。 在规则引擎配置中,一个规则最多可以有 10 个匹配条件和 5 个操作。 一个规则中只能有一个替代路由配置操作。

可在规则引擎配置中使用以下操作。

修改请求标头

使用这些操作可以修改发送到后端的请求中提供的标头。

Required fields

操作 HTTP 标头名称
附加 如果选择此选项并且规则匹配,则会将“标头名称”中指定的标头添加到请求并使用指定的值。 如果该标头已存在,则会将该值追加到现有值后面。 字符串
Overwrite 如果选择此选项并且规则匹配,则会将“标头名称”中指定的标头添加到请求并使用指定的值。 如果该标头已存在,则指定的值将替代现有值。 字符串
删除 如果选择此选项,规则匹配,并且在规则中指定的标头存在,则会从请求中删除该标头。 字符串

修改响应标头

使用这些操作可以修改返回给客户端的响应中提供的标头。

Required fields

操作 HTTP 标头名称
附加 如果选择此选项并且规则匹配,则会通过使用指定的值将“标头名称”中指定的标头添加到响应 。 如果该标头已存在,则会将该“值”追加到现有值后面。 字符串
Overwrite 如果选择此选项并且规则匹配,则会将“标头名称”中指定的标头添加到响应并使用指定的“值” 。 如果该标头已存在,则该“值”将替代现有值。 字符串
删除 如果选择此选项,规则匹配,并且在规则中指定的标头存在,则会从响应中删除该标头。 字符串

路由配置替代

路由类型:重定向

使用这些操作可将客户端重定向到一个新 URL。

Required fields

字段 说明
重定向类型 重定向是一种将用户/客户端从一个 URL 发送到另一个 URL 的方式。 重定向类型会设置客户端使用的状态代码,以便理解重定向的目的。

可以选择以下重定向状态代码:已找到 (302)、已移动 (301)、临时重定向 (307) 和永久重定向 (308)。
重定向协议 根据传入请求保留协议,或者为重定向定义一个新协议。 例如,为 HTTP 到 HTTPS 的重定向选择“HTTPS”。
目标主机 设置此值可更改 URL 中用于重定向的主机名,或者保留传入请求中的主机名。
目标路径 根据传入请求保留路径,或者为重定向更新 URL 中的路径。
查询字符串 设置此值可替换传入请求 URL 中的任何现有查询字符串,或者保留查询字符串原始集。
目标片段 目标片段是“#”之后的 URL 部分,浏览器通常使用该段登录到页面的特定部分。 设置此值可将片段添加到重定向 URL。

路由类型:前进

使用这些操作可将客户端转发到新 URL。 这些操作还包含用于 URL 重写和缓存的子操作。

字段 说明
后端池 选择要替代和服务请求的后端池,可以看到当前在 Front Door 配置文件中的所有预配置的后端池。
转发协议 此协议用于将请求转发到后端或匹配来自传入请求的协议。
URL 重写 在构造要转发到后端的 URL 重写请求时使用的路径。
缓存 为此传递规则启用缓存。 启用后,Azure Front Door 会缓存静态内容。

URL 重写

使用此设置可以配置可选的“自定义转发路径”,以便在构造要转发到后端的请求时使用。

字段 说明
自定义转发路径 定义将请求转发到的路径。

Caching

使用这些设置来控制为包含查询字符串的请求缓存文件的方式。 是否根据所有参数或所选参数来缓存内容。 可以使用这些设置来覆盖生存时间 (TTL) 值,以控制内容在缓存中保留多长时间。 若要将缓存作为一项操作强制执行,请将“缓存”字段设置为“已启用”。强制缓存时,会出现以下选项:

缓存行为 说明
忽略查询字符串 缓存资产后,所有后续请求将忽略查询字符串,直至缓存的资产过期。
使用查询字符串 具有唯一 URL 的每个请求(包括查询字符串)将被视为具有其自己的缓存的唯一资产。
忽略指定的查询字符串 缓存时将忽略在“查询参数”设置中列出的请求 URL 查询字符串。
包括指定的查询字符串 缓存时将使用“查询参数”设置中列出的请求 URL 查询字符串。
其他字段 说明
动态压缩 Front Door 可在边缘动态压缩内容,从而更快地做出响应。
查询参数 允许/禁止的参数的逗号分隔列表,用作缓存的基础。
使用默认缓存持续时间 设置为使用 Azure Front Door 默认缓存持续时间,或定义将忽略源响应指令的缓存持续时间。

后续步骤