hexo博客添加又拍云CDN全站加速
准备步骤
登陆购买域名的网站(如腾讯云/阿里云/华为云),用于域名解析。
注册又拍云账号(用于添加cdn网站)
又拍云联盟注册与说明
在页脚底部添加又拍云图片logo
编辑/themes/hexo-theme-matery/layout/_partial/footer.ejs
在第6行<div class="col s12 m8 l8 copy-right"></div>
这个div末尾中添加
<a href="https://www.upyun.com/" target="_blank"> <img src="../youpaiyun.png" width="5%" /> 又拍云提供存储服务</a>
创建又拍云CDN加速服务
1、创建服务名称和加速域名设置
进入控制台,找到CDN,然后创建服务,根据使用场景,我们设置CDN服务名称、加速域名,以及选择对应场景。
2、设置回源协议
这里根据项目是HTTP还是HTTPS设置回源协议。
如果我们需要同时HTTPS和HTTP启用,直接用协议跟随。设置服务器的源IP地址和端口默认(如果我们有特殊端口根据自己项目端口)。
又拍云CDN接入启用
1、CNAME解析
我们在上面添加域名的时候,可以看到有CNAME解析信息,复制信息,然后添加到我们域名域名解析设置。
根据我们域名所在的DNS平台或者域名自己的DNS,然后添加CNAME解析,将原来的A记录或者别名解析替换掉。这里我使用的是阿里云的域名解析。
完成上述这些后,基本上就可以不用管了,因为又拍云 CDN 默认的配置就完全胜任你的站点的加速服务了,然后只需要等着 DNS 里的解析在各地生效即可,一般最多 72 个小时全部完成。
2、启动HTTPS
如果我们站点是用HTTPS加密传输的,需要在又拍云CDN中也启用我们开始上传的自定义证书。
进入HTTPS管理,然后启动证书,只需要解析正常通过,就可以将网站启用CDN加速。
记一个更换SSL证书遇到的问题
我是在阿里云申请的免费SSL证书,然后将证书部署到宝塔的Nginx中,如果你的网站还使用了又拍云的CDN加速,记得在又拍云的证书管理-添加自有证书中上传一次
CDN 默认错误码
详细官方文档地址:https://help.upyun.com/knowledge-base/cdn-default-error-code/
访问控制相关
序号 | 错误码(code) | 错误描述(msg) | 发生了什么 |
---|---|---|---|
1 | 40310001 | invalid url | URL 被禁止访问 |
2 | 40310002 | region is forbidden | 触发了地区访问限制规则 |
3 | 40310003 | too many requests | 触发了 IP 频率限制规则 |
4 | 40310011 | invalid User-Agent header | 触发了 User-Agent 防盗链规则 |
5 | 40310012 | remote address is forbidden | 触发了 IP 黑白名单规则 |
6 | 40310013 | invalid user token | 触发了 Token 防盗链规则 |
7 | 40310014 | invalid Referer header | 触发了 Referer 防盗链规则 |
8 | 40310015 | referer uri is forbidden | 触发了 Referer URI 防盗链规则 |
9 | 40310020 | invalid authentication response body | 鉴权服务器返回的 body 内容不合法,导致鉴权失败 |
10 | 40310021 | invalid authentication response status | 鉴权服务器返回的状态码不合法,导致鉴权失败 |
11 | 40310022 | cyclic authentication requests | 鉴权服务器地址在又拍云进行了 CDN 加速,导致了循环请求 |
12 | 50310020 | authentication service unavailable | 鉴权服务器不可用 |
13 | 40110910 | authentication fails | 回源鉴权失败 |
14 | 40310006 | (api) request body too large | 通过 API 接口上传的文件 body 太大 |
15 | 41310001 | request body too large | 请求的 body 大小超过限制 |
16 | 40010030 | multiple Content-Type header | 触发了 WAF 规则,请求头中含有多个 Content-Type 头部 |
17 | 40310031 | too large form | 触发了 WAF 规则,form 表单太大 |
18 | 40310032 | waf protection rules triggered | 触发了 WAF 规则 |
19 | xxx10999 | edge rule triggered | 触发边缘规则,xxx 特指状态码 |
20 | 40510004 | invisible domain | 域名触发了敏感信息被禁止访问 |
HTTP 及平台规范相关
序号 | 错误码(code) | 错误描述(msg) | 发生 |
---|---|---|---|
1 | 41610001 | multiple Range header | 多个 Range 头 |
2 | 41610002 | multiple sections in Range header | Range 请求中存在多段请求范围 |
3 | 41610003 | illegal range portion | Range 请求范围非法 |
4 | 40010040 | absent Host header | 请求中缺少 Host 头部,返回工信部错误页面 |
5 | 40010041 | bucket not found | 未绑定加速域名或者服务不存在,返回工信部错误页面 |
6 | 40510001 | invisible bucket | 服务(空间)为关闭状态 |
7 | 41210001 | last-modified or Etag illegal | Last-Modified 头部或者 ETag 头部非法 |
8 | 40310007 | cyclic request | 触发了循环请求限制策略 |
9 | 50310000 | unknown error | 其他未知的错误 |
常见回源错误
序号 | 错误码(code) | 错误描述(msg) | 发生了什么 |
---|---|---|---|
1 | 403xx002 | response body too large | 回源响应体太大 |
2 | 502xx001 | no valid source address | 没有合法的回源地址 |
3 | 502xx002 | can’t connect to upyun fs | 无法连接 upyun 存储 |
4 | 503xx001 | resolve domain failed | 域名解析错误 |
5 | 503xx002 | resolve domain timeout | 域名解析超时 |
6 | 503xx004 | connection refused | 连接被拒绝 |
7 | 503xx005 | connection reset by peer | 连接被源站重置 |
8 | 503xx006 | handshake failed | 握手失败 |
9 | 503xx007 | client abort | 客户端取消连接 |
10 | 503xx008 | closed | 连接被关闭 |
11 | 503xx009 | broken pipe | 读取数据出现问题 |
12 | 503xx010 | unexpect end of stream | 未知的源站响应结束 |
13 | 503xx015 | certificate host mismatch | SSL 证书头不匹配 |
14 | 503xx016 | self signed certificate | SSL 证书为自签名证书 |
15 | 503xx017 | certificate has expired | SSL 证书过期 |
16 | 504xx001 | connection timed out | 回源连接超时 |
17 | 504xx002 | connection timeout | 连接超时 |
18 | 504xx003 | read timeout | 读取数据超时 |
19 | 504xx004 | send timeout | 发送请求超时 |
其中 xx
可能是 00
、01
、02
、03
、04
。00
表示 UNKNOWN
,01
表示又拍云存储,02
表示用户自主源,03
表示 CDN 代理层
,04
表示 作图服务
。
如何辨别
方式一
如果您通过浏览器访问,您可以通过浏览器页面查看到一段错误代码,例如:
{"code":"40310002","msg":"region is forbidden"}
如上错误代码及描述则说明用户在 CDN 侧配置了地区访问限制策略。
方式二
通过 curl 命令可以看到 X-Error-Code
响应字段,则可以看出触发了何种错误。
<br />< HTTP/1.1 403 Forbidden
< Server: marco/2.2
< Date: Fri, 18 May 2018 06:39:47 GMT
< Content-Type: application/json
< Connection: keep-alive
< X-Error-Code: 40310002
< X-Request-Id: 6b947a5e14a252909acab1e55df121c2
< Content-Length: 47
< Via: M.pcw-cn-hkg-166
通过查看 X-Error-Code: 40310002
,可以看出触发了地区访问限制规则。