共用方式為

规则集操作

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

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

路由配置替代

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

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

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

属性

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

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

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

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

Property 支持值
查询字符串缓存行为
  • 忽略查询字符串:生成缓存键时不考虑查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IgnoreQueryString
  • 使用查询字符串:每个唯一的 URL 都有其自己的缓存键。 在 ARM 模板中,使用 queryStringCachingBehaviorUseQueryString
  • 忽略指定的查询字符串:在生成缓存键时,排除参数中指定的查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IgnoreSpecifiedQueryStrings
  • 包括指定的查询字符串:在生成缓存键时,包括参数中指定的查询字符串。 在 ARM 模板中,将 queryStringCachingBehavior 属性设置为 IncludeSpecifiedQueryStrings
查询参数 查询字符串参数名称的列表,用逗号分隔。 仅当“查询字符串缓存行为”设置为“忽略指定的查询字符串”或“包括指定的查询字符串”时才设置此属性。
Compression
  • 已启用: Front Door 动态在边缘节点压缩内容,从而产生更小、更快的响应。 有关详细信息,请参阅 文件压缩。 在 ARM 模板中,将 isCompressionEnabled 属性设置为 Enabled
  • Disabled. 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 格式指定持续时间。

Examples

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

显示源组替代操作的门户屏幕截图。

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

门户截图显示缓存密钥查询字符串操作。

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

显示缓存过期操作的门户屏幕截图。

修改请求标头

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

属性

Property 支持值
Operator
  • 附加: 指定的标头将添加到具有指定值的请求中。 如果该标头已存在,则会使用字符串串联将该值追加到现有标头值。 无需添加分隔符。 在 ARM 模板中,使用 headerActionAppend
  • 改写: 指定的标头将添加到具有指定值的请求中。 如果该标头已存在,则指定的值将替代现有值。 在 ARM 模板中,使用 headerActionOverwrite
  • 删除: 如果规则中指定的标头存在,则标头将从请求中删除。 在 ARM 模板中,使用 headerActionDelete
标题名称 要修改的标头名称。
标头值 要追加或覆盖的值。

Example

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

显示修改请求标头操作的门户屏幕截图。

Note

某些 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

修改响应标头

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

属性

Property 支持值
Operator
  • 附加: 指定的标头将添加到具有指定值的响应中。 如果该标头已存在,则会使用字符串串联将该值追加到现有标头值。 无需添加分隔符。 在 ARM 模板中,使用 headerActionAppend
  • 改写: 指定的标头将添加到具有指定值的响应中。 如果该标头已存在,则指定的值将替代现有值。 在 ARM 模板中,使用 headerActionOverwrite
  • 删除: 如果规则中指定的标头存在,则标头将从响应中删除。 在 ARM 模板中,使用 headerActionDelete
标题名称 要修改的标头名称。
标头值 要追加或覆盖的值。

Example

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

显示修改响应头操作的门户屏幕截图。

Note

某些 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 路径转换为小写或大写。 有关详细信息,请参阅 服务器变量

属性

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

Example

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

显示 URL 重定向操作的门户屏幕截图。

URL 重写

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

属性

Property 支持值
源模式 定义要替换的 URL 路径中的源模式。 目前,源模式使用基于前缀的匹配。 若要匹配所有 URL 路径,请使用正斜杠(/)作为源模式值。 注意,只为源模式考虑路由配置中要匹配的模式之后的路径。 有关详细信息,请参阅 源模式。
Destination 定义要在重写中使用的目标路径。 目标路径会覆盖源模式。
暂留不匹配的路径 如果设置为 “是”,则源模式后剩余的路径将追加到新的目标路径。

Example

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

显示 URL 重写操作的门户屏幕截图。

后续步骤