本文档介绍如何在火山引擎内容分发网络(CDN)中配置 Referer 黑白名单。
Referer 是用户请求中的一个请求头,表示请求是来自哪个站点页面的。Referer 头部指示了源页面的 URL,包含协议,域名,端口,路径与查询字符串。端口是可选的。
Referer 头部的作用之一是防盗链。默认情况下,您在 Referer 名单中配置的条目仅仅是域名和 IP 地址。在收到请求时,CDN 尝试将这些条目与 Referer 头部中的域名或 IP 地址进行匹配。如果您希望 CDN 尝试对 Referer 头部中的路径或查询字符串进行匹配,您需要在名单中指定正则表达式。参见 配置说明 中 规则内容 配置的描述。
"空 Referer" 的定义是 Referer 头部没有值或者请求中不包含 Referer 头部。
CDN 提供的一系列访问控制功能有不同的优先级。在 CDN 处理用户请求时,这些功能按优先级对请求生效。参见 访问控制功能的优先级。
登录 火山引擎内容分发网络控制台。
在左侧导航栏,点击 域名管理。
在 域名管理 页面,找到需要配置的域名,点击 管理。
在域名页面上,点击 访问控制 页签。
在页面右上方,点击 编辑配置。
在 Referer 黑白名单 下方,设置 状态 为启用。
参照 配置说明 进行配置。
在页面右上方,点击 提交编辑。
配置 | 说明 |
---|---|
类型 | 表示名单的类型。该配置有以下选项:
|
配置方式 | 表示如何指定名单中的条目。该配置有以下选项: |
规则内容 | 表示名单中条目的类型。该配置有以下选项: |
常规名单(输入框) | 表示一个或者多个名单条目。如果您在 规则内容 处勾选了 常规名单,该输入框会出现。 说明 如果您需要输入的条目数量超过 1,000,参考 全局配置。 关于泛域名和子域名
|
忽略大小写 | 表示 CDN 在尝试将名单中的条目与请求中的 Referer 头部匹配时,匹配过程是否是大小写敏感的。勾选该选项示匹配过程是大小写不敏感的。 |
忽略 scheme 校验 | 表示在尝试使用名单中条目匹配 Referer 头部前,CDN 是否校验 Referer 头部的合法性。
关于 Referer 头部合法性
|
正则名单(输入框) | 表示一个或者多个正则表达式,用于匹配 Referer 头部值。您最多可以指定 100 个正则表达式。如果您在 规则内容 处勾选了 正则名单,该输入框会出现。 |
我们通过以下名单配置为例,阐述 Referer 头部的匹配逻辑。如果一个请求未匹配白名单或者匹配了黑名单,CDN 会拒绝请求并返回 403 响应状态码。
名单配置 | 用户请求中的 Referer 头部 | 匹配结果 | 匹配逻辑说明 |
---|---|---|---|
| http://www.test.com/test.js | 是 | Referer 头部中的域名匹配名单。 |
http://www.test.com:80/test.js | 是 | ||
www.test.com | 见匹配逻辑说明 |
| |
2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | |||
http://2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b | 否 | Referer 头部不符合 HTTP 协议规范。规范要求当 host 是一个 IPv6 地址时,该地址必须包裹在 [] 中。 | |
http://[2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b] | 是 | Referer 头部中的 IP 地址匹配名单。 | |
http://aaa.test.com | 是 | Referer 头部中的多级域名匹配名单中的泛域名条目。泛域名是包含多级域名的。 | |
http://ss.aaa.test.com | 是 | ||
http://test.com | 否 | Referer 头部中的二级域名不匹配名单中的泛域名条目。原因是泛域名不包含二级域名本身。 |