规则引擎提供了强大的灵活配置能力,以下是常见的应用场景及配置示例:
根据客户端请求的特征(如请求头、客户端 IP、请求 URL、客户端所在地区等),制定黑白名单策略,并指定 CDN 的响应状态码。
配置示例:
/test/(忽略大小写)myParam - 存在http://www.example.com/(忽略大小写)198.51.100.25.*test.*(忽略大小写)403
根据客户端请求的特征(如请求头、请求 URL、客户端所在地区等)设置不同的缓存时间。
配置示例:
/test/(忽略大小写)myParam - 存在http://www.example.com/(忽略大小写)198.51.100.25.*test.*(忽略大小写)CDN缓存,强制缓存 false,缓存时间 30 秒,Set-Cookie不缓存 false
您还可以实现特定的缓存需求,例如让 CDN 对 OPTIONS 请求直接响应 200 状态码。
配置示例:
OPTIONS200
根据客户端请求的特征(如请求 URL 中的参数、客户端所在地区等)对请求进行限速。
配置示例:
myParam - 存在300 B/s,不限速部分 10 KB
您可以实现复杂的跨域资源共享(CORS)策略。例如,除了标准的 HTTP/HTTPS 请求外,您还可以还允许来自微信小程序的跨域请求,并根据请求中的 Origin 头部动态设置 Access-Control-Allow-Origin 响应头。
配置示例:
删除,响应头名称 Access-Control-Allow-Origin^weapp://www.example.com、^http://img.example.com.com(忽略大小写)设置,响应头名称 Access-Control-Allow-Origin,响应头值 ${http_origin}
您可以自定义浏览器下载时显示的文件名,并防止文件在下载过程中被劫持。
要实现此目的,您可以通过名为 filename 的查询参数、请求头或 Cookie 来传递文件的真实名称,然后将 Content-Disposition 响应头设置为 attachment;filename="${arg_filename}";filename*=utf-8''${arg_filename}。
配置示例:
filename - 存在设置,响应头名称 Content-Disposition,响应头值 attachment;filename="${arg_filename}";filename*=utf-8''${arg_filename}说明
filename*=utf-8''${arg_filename} 格式遵循 RFC 5987 规范。filename="${arg_filename}"; 用于兼容某些旧版浏览器不支持 RFC 5987 的情况。需要留意的是,对于这些旧版浏览器,下载文件的名称可能会显示为乱码。当客户端请求由于访问控制配置拦截或限速等原因受阻时,CDN 会在 HTTP 响应中默认新增 X-Exception-Info 响应头来指示异常原因。各异常类型对应的具体响应信息,请参见下方的 X-Exception-Info 常见响应信息列表。
通过规则引擎识别这些特定的响应头,您可以配合 HTTP 状态码改写 或 自定义页面 动作,对拦截行为进行友好的定制处理。常见场景包括:
场景 1:请求被限速时,转到自定义页面 当触发下载限速规则时,您可以通过识别响应头 X-Exception-Info: rate limit by download speed limit,并使用“自定义页面”动作将请求重定向到指定的提示页面(例如:https://www.example.com/rate-limit.html)。
配置示例:
X-Exception-Info - 等于 - rate limit by download speed limit(忽略大小写)自定义重定向页面,状态码 303,Location https://www.example.com/rate-limit.html场景 2:请求被 IP 黑名单拦截时,自定义状态码 当请求触发 IP 黑名单被拦截时,CDN 默认会返回特定的状态码。您可以通过识别响应头 X-Exception-Info: deny by ip access rule,并使用“HTTP 状态码改写”动作,将其修改为您业务期望的状态码(例如:404 或 450)。
配置示例:
X-Exception-Info - 等于 - deny by ip access rule(忽略大小写)450参考:X-Exception-Info 常见响应信息列表
异常类型 |
|
|---|---|
地域访问控制 | deny by area access rule |
禁用 HTTP Method | deny by method rule |
IP 黑白名单 | deny by ip access rule |
Referer 黑白名单 | deny by referer access rule |
UA 黑白名单 | deny by ua access rule |
Origin 黑白名单 | deny by origin access rule |
自定义头部黑白名单 | deny by customiza access rule |
自定义拦截规则 | deny by request block rule |
URL 鉴权 | deny by url auth |
远程鉴权 | deny by remote url auth |
下载限速 | rate limit by download speed limit |
下载限速(规则引擎) | rate limit by rule engine |
拒绝访问(规则引擎) | deny by rule engine |
流量检测-限速 | rate limit by flow detection |
流量检测-拦截 | deny by flow detection |
流量检测(高危 IP 情报库) | deny by flow detection (high risk IP) |