UPYUN CDN – 外链开关及防盗链设置
UPYUN 对外链的开关及防盗链提供后台管理功能,下面讲一下具体的管理操作:
外链开关
登陆 UPYUN 管理中心,按顺序进入
【服务】—【基础配置】
此功能控制站点资源的访问性,可以开启或关闭,一旦关闭外链功能,所有资源都将不能访问。
防盗链设置
UPYUN 防盗链支持域名、IP、客户端、Token 等多种防盗链模式,并且可自定义防盗链提示图,具体操作如下:
首先登录 UPYUN 进入管理中心
【服务】—选择服务项,点击“功能配置”—【防盗链】
1)IP禁用:
如果不希望某个 IP 或 IP 段的客户访问服务中的文件,可以使用 IP 禁止功能
点击“管理”,选择开启 IP 禁用,在下方的禁用 IP 地址输入框内输入禁用的 IP 地址
注意每行只能输入一个 IP 地址,用“回车”隔开
支持 * 通配符,如 10.11.12.* 将禁止 10.11.12.0~10.11.12.255 的 IP 访问,1 个 IP 段禁用仅占用 1 个 IP 禁用上限
注意:
l 最多可禁止 50 个 IP 或 IP 段
l 被禁止的 IP 访问资源时,将提示 403。
2) 域名防盗链
可通过域名白名单或黑名单设置,允许或禁止某个域名网站引用服务的文件。
例如:如下图设置
效果为所有 upyun.com 网址,和 abc.taobao.com 、可引用,其他域名的网站一律无法引用
反之,如果仅需限制某个网址无法引用,那就选择“开启防盗链黑名单”并且填写禁止引用的网址到黑名单列表即可
Referer配置,可以选择 “允许Referer为空“和”禁止Referer为空“
允许 Referer 为空:HTTP 请求中不管是否包含 Referer 头部,都以域名防盗链的黑白名单的访问逻辑为准。
禁止 Referer 为空:HTTP 请求中不包含 Referer 头部,那么这类请求直接禁止访问。返回 403 Forbidden
3)客户端防盗链
对于一些仅用于客户端软件,或手机 APP 的客户,可以通过客户端白名单功能限制文件访问
例如:如下图设置,则只有 user-agent为Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3 的设备可访问
- 每行输入一个
- 支持通配符(*)
- 不区分大小写
4) Token 防盗链
适合下载类网站或应用使用,可设置签名和签名过期时间。
签名:
_upt = MD5(token密匙&etime&URI){中间8位}+etime
参数:
token 密匙:用户所填的密钥
etime:过期时间,必须是 UNIX TIME 格式,如:1378092990
URI:请求地址(不包含?及后面的Query String),如:/dir/pic.jpg
举例:
设置图片链接 http://{服务域名}/dir/pic.jpg 10分钟有效
当前时间秒数 = 1370000000
etime = 1370000000 + 600 = 1370000600
URI = “/dir/pic.jpg”
sign = MD5(token密匙&etime&URI) = xxxxxxxxxxxxabcdefghyyyyyyyyyyyy
_upt = MD5(token密匙&etime&URI){中间8位}+etime = abcdefgh1370000600
该签名拼接在 URL 地址或用户 Cookie 中,均可起到防盗链作用:
URL: http://{服务域名}/dir/pic.jpg?_upt=abcdefgh1370000600
Cookie: _upt=abcdefgh1370000600;
备注:
对于使用 Cookie 类无法给每个链接进行单独签名的情况,可使用 / 作为 URI 进行统一的泛签名,
如:
MD5(token密匙&过期时间&/){中间8位}+过期时间
注意:泛签名在过期时间内,对服务内的所有链接资源都有效
目录级别 Token 防盗链:_upp 参数
_upp 参数是用来配合 Token 防盗链的 _upt 参数使用的,以便支持用户可自定义目录级别进行签名,默认情况下 _upt 均以完整的 URI 进行签名,当 _upp = 2 那么就以相应的 uri = ‘/a/b/’ 来进行签名。这样就很容易实现对某个目录的防盗链权限控制了。
示例
http://upyun-assets.b0.upaiyun.com/docs/cdn/upyun-cdn-architecture.png?_upp=2&_upt=abcdefgh1370000600
例如对于以上这条结合 _upp 参数的 Token 防盗链请求来说,对应 _upt 参数正确的签名应按如下公式进行计算(其中被签名 URI 此时为 /docs/cdn/):
MD5(token 密匙&过期时间&/docs/cdn/){中间 8 位} + 过期时间
详细说明
其值应为正整数,设置范围 0 <= x <= 20,超过该范围或其它不合法的字符均视为无效值,此时仍然按照 URI 全路径进行匹配.
当 _upp = 0 时,总是匹配 /;其它 _upp = 1,2,3 … 分别对应一级目录,二级目录,三级目录 …
例如,对于 uri = ‘/a/b/c/foo.jpg’ 来说:
[v] /a/b/c/foo.jpg => ‘/a/b/c/foo.jpg’
[v] /a/b/c/foo.jpg?_upp=0 => ‘/’
[v] /a/b/c/foo.jpg?_upp=1 => ‘/a/’
[v] /a/b/c/foo.jpg?_upp=2 => ‘/a/b/’
[v] /a/b/c/foo.jpg?_upp=3 => ‘/a/b/c/’
[x] /a/b/c/foo.jpg?_upp=4 => ‘/a/b/c/foo.jpg’
[x] /a/b/c/foo.jpg?_upp=-1 => ‘/a/b/c/foo.jpg’
[x] /a/b/c/foo.jpg?_upp=abc => ‘/a/b/c/foo.jpg’