You need to enable JavaScript to run this app.
导航
自定义拦截规则
最近更新时间:2024.09.23 10:45:26首次发布时间:2024.01.16 16:27:00

本文档介绍火山引擎内容分发网络(CDN)中用户请求的自定义拦截功能。

该功能使您可以对请求路径、查询参数和客户端 IP 地址设置过滤条件,并对符合过滤条件的请求设置拦截方式。拦截的方式包括重定向以及响应 4xx 状态码。

说明

该功能目前以白名单的方式对外开放。如果您需要此功能,请 提交工单

功能优先级

CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级

操作步骤

  1. 登录 火山引擎内容分发网络控制台

  2. 在左侧导航栏,点击 域名管理

  3. 域名管理 页面,找到需要配置的域名,点击 管理

  4. 在域名页面上,点击 访问控制 页签。

  5. 在页面右上方,点击 编辑配置

  6. 自定义拦截规则 下方,设置 状态 为启用。

  7. 点击 添加规则。您最多可以创建 10 条规则。

  8. 编辑规则 页面,根据 配置说明 进行设置。

  9. 设置完成后, 在页面右上角点击 提交编辑

alt

配置说明

说明

关于以下配置的内容输入要求,参见 配置输入要求

配置说明
规则名称表示规则的名称。

生效对象

表示一个或者多个过滤条件,用于对请求进行过滤。点击 添加 创建一个过滤条件,您最多可以创建 5 个过滤条件。如果您不添加任何过滤条件,CDN 会拦截所有请求。

在每个过滤条件中,您需要设置过滤类型、对比类型和过滤值。过滤值可以是多个。如果 过滤类型客户端 UA,多个过滤值之间以竖线(|)分隔。如果 过滤类型 不是 客户端 UA,多个过滤值之间以分号(;)分隔。多个过滤值之间的关系是 "或"。

过滤类型的说明如下:

  • 文件全路径:表示请求 URL 中的路径。

  • 文件目录:表示路径中的目录。

  • 文件后缀:表示路径末尾的扩展名。

  • 全路径正则:表示请求 URL 中的路径,通过正则表达式匹配。

  • 请求 FullQuery:表示请求 URL 中的查询字符串。

  • 请求 Query:表示请求 URL 中的查询参数。

  • 客户端 IP:表示客户端的 IP 地址。

  • 客户端 UA:表示请求中 User-Agent 头部值。

  • 自定义请求头部:表示请求中的自定义头部和头部值。

如果过滤类型是 全路径正则请求 FullQuery,过滤值是正则表达式。要使用这两个过滤类型,请 提交工单

关于对比类型,需要留意的是:

  • 等于、匹配: 表示如果请求匹配任何过滤值,该请求就符合过滤条件。

  • 不等于、不匹配: 表示如果请求不匹配所有过滤值,该请求才符合过滤条件。

  • 属于/属于全局名单:仅适用于 请求 Query,表示一个类型是 "通用列表" 的全局配置。"通用列表" 用来定义大量过滤值。全局配置是一个白名单功能,要使用该功能,请 提交工单

拦截方式

表示 CDN 如何拦截符合过滤条件的请求。该配置的可选值有:

  • 4xx 错误:表示 CDN 响应一个 4xx 的错误码。

  • 重定向:表示 CDN 将请求重定向到另一个 URL。

如果您计划创建多条规则,每条规则中指定的拦截方式必须相同。

拦截方式为 4xx 错误 时,您可以设置以下额外配置:

配置说明
响应状态码表示对于拦截的请求,CDN 的响应状态码。您需要设置一个 400-499 范围内的错误码,例如 405

响应 Body

表示响应正文中包含的内容。该配置有以下选项:

  • 系统默认:表示 CDN 使用 4xx 错误码的标准响应正文。

  • 自定义:表示 CDN 使用一个自定义响应页面。您可以在 响应页面 下拉列表中选择一个自定义页面。下拉列表中的页面来自 全局配置 页面下的 自定义响应页面 标签页。需要留意的是,"全局配置" 是一个白名单功能。要使用该功能,请 提交工单

拦截方式为 重定向 时,您可以设置以下额外配置:

配置说明
响应状态码表示对于拦截的请求,CDN 的响应状态码。您可以设置 301 或者 302
Location表示一个重定向 URL。

规则优先级

在规则列表中,每条规则都有优先级。优先级为 1 的规则具有最高优先级。当收到一个用户请求时,CDN 按规则的优先级,从高到低尝试将请求与规则匹配。如果请求匹配了一条规则,匹配过程就停止了。您可以拖动规则来调整优先级。

规则中的 生效条件 定义了规则的作用范围。如果您创建了多条规则,请留意这些规则的作用范围是否存在交集,并按您的预期设置规则的优先级。例如,您创建了两条规则。规则A 的作用范围是 /dir/,规则B 的作用范围是 png;jpg。如果 /dir/ 目录下存在 .png 文件,并且您希望规则B 对 .png 文件的请求生效,那么您需要设置规则B 的优先级高于规则A。

更多信息

配置输入要求

配置输入要求
规则名称长度不超过 20 个字符,可以包含字母、数字、下划线(_)、中划线(-)、汉字。一个汉字占 3 个字符。

生效对象

生效对象中,过滤值的输入要求如下:

  • 如果过滤类型是 文件全路径,每个过滤值表示一个文件路径。每个文件路径必须以斜杠(/)开头。您可以在路径中使用一个或者多个星号(*),每个星号表示一个或者多个字符。例如:/www/img/my*image.png

  • 如果过滤类型是 文件目录,过滤值中的每个目录必须以斜杠(/)开头和结尾。例如:/www/img/

  • 如果过滤类型是 文件后缀,过滤值中的每个后缀无需以句点(.)开头。例如:png;txt

  • 如果过滤类型是 文件全路径文件目录文件后缀,过滤值的总长度不能超过 1,024 个字符,不能包含以下字符:

    • 连续斜杠(//)、空格、美元符号($)、问号(?)、Delete(ASCII code 127)。
  • 如果过滤类型是 请求 Query,参数名称和过滤值的有以下要求:

    • 您只能指定一个参数名称,也只能指定一个参数值作为过滤值。

    • 参数名称和过滤值的长度都不能超过 256 个字符。

    • 参数名称和过滤值可以包含数字、字母、百分号(%)、下划线(_)、中划线(-)。

  • 如果过滤类型是 客户端 IP,过滤值有以下要求:

    • 总长度不能超过 30,000 个字符。

    • IP 地址的数量不能超过 50 个。

    • IP 地址可以是 IPv4 地址、IPv4 CIDR 地址、IPv6 地址或 IPv6 CIDR 地址。

  • 如果过滤类型是 自定义头部客户端 UA 时,过滤值有以下要求:

    • 总长度不能超过 1,024 个字符。除了开头和结尾,过滤值不能包含 *。* 表示一个或者多个任意字符。

    • 过滤值的数量不能超过 50 个。

  • 如果过滤类型是 全路径正则请求 FullQuery 时,每个过滤值都是一个正则表达式,总长度不能超过 1,024 个字符。

LocationURL 必须以 http://https:// 开头,长度不能超过 1,024 个字符。