背景

不光是七牛云,由于众所周知的原因,所有国内的云服务商都一样。加速的域名如果没有备案就不能享受国内的CDN节点,而只能使用海外节点。
本文使用曲线救国的方式实现给未备案域名进行国内CDN加速。
另外,本文也对七牛云加速的机制做了一些说明,即使你不需要对未备案的域名加速,相信本文也能告诉你七牛云CDN加速的机制和设置方法。

前提

很遗憾,这个方案也需要你至少有一个已经备案的域名作为中转。
后文用以下两个域名作为例子来说明。

  • 想要加速的未备案域名no-beian.net
  • 用来加速的已备案的中转域名ok-beian.cn

七牛云的设置

空间管理 - 新建空间

  • 存储空间名称:随便。比如no-beian
  • 存储区域:选国内的节点。比如华南。
  • 访问控制:公开

添加完毕后会提示你绑定加速域名。先不管。进入空间设置。

往下翻,找到镜像回源-设置。

开启镜像回源,并设置主线路URL为你要加速的网站URL。比如 http://no-beian.net

然后点确定启用修改。

这个设置非常重要,目的是当有用户试图访问加速域名下某个资源的时候,如果这个资源不存在(还没有被缓存),那么七牛云会根据这里设置的镜像回源URL先访问你真正的原来的服务器并缓存到七牛云的CDN服务器上然后再返回给用户。下次再有人访问同一个资源时,七牛云一看这个文件以及缓存过了并且没有过期,那么就不会再去源站取资源而是直接返回的用户。所以这种方法的好处就是你根本不需要手动将文件一个一个上传到七牛云的服务器上。这一切都是七牛云自动帮你完成的。幸好,目前这里填写的域名还没有要求一定是备案过的不然本文的方法也是行不通的。

至此空间设置完成,接着配置加速域名。

域名管理 - 添加域名

  • 加速域名:填入一个已备案域名的二级域名作为加速用的域名。比如 assets.ok-beian.cn
  • 覆盖范围选全球
  • 使用场景根据需要选择,一般选图片小文件即可
  • 源站配置选七牛云储存,并选择刚刚新建的空间(这个设置就是将这个加速域名绑定在某一个储存空间上,刚才建完空间后提示让你绑定域名也是一个目的)
  • 缓存配置点自定义,使用推荐配置即可
    点创建即可。
    域名添加完成后需要过一段时间才能生效,同时会给你一个用来设置CNAME的七牛云的子域名,比如 assets-ok-beian-cn-idvfuof.qiniudns.com
    至此七牛云这边的设置就完成了。
    下面继续配置CNAME。

为加速域名(已备案)配置CNAME

  • 在你的域名管理商那里添加一个CNAME记录。
    名字为assets(这个要跟你刚才建立的加速二级域名一致),记录值为七牛云给你的CNAME域名,比如比如 assets-ok-beian-cn-idvfuof.qiniudns.com
  • 添加完以后回到七牛云的域名状态页面可以看到CNAME已经生效了。
    至此,CNAME配置完成。
    最后,我们还需要将想要加速的站点里的静态资源的URL里面的域名换成加速域名。

设置站点

修改你要加速的未备案站点no-beian.net。将需要加速的静态资源的域名全部换成加速域名assets.ok-beian.cn即可。
这里一般不太会手动一个一个修改。要看你的网站使用了什么框架。基本上流行的框架或插件都有一个设置CDN加速域名的地方。这个需要你自己去找找了。
比如我的站点用的是Typecho框架,并且使用的是handsome主题包。在这个主题的管理页面就可以设置CDN加速域名的地方。
至此,设置全部完成。从此你的站点就会被七牛云加速了。

总结加速流程

设置了乱七八糟的东西,到底七牛云是怎么帮你我们的站点加速的呢?举一个例子好了。
假设站点 http://no-beian.net/ 首页上有一张图片a.jpg,那么本来应该通过 http://no-beian.net/a.jpg 来访问它。现在你的站点上的图片URL已经被你换成了加速域名(上面最后一个步骤),也就是用户访问主页的时候会访问这个URL: http://assets.ok-beian.cn/a.jpg ,而这个域名被设置了CNAME,所以请求会被转发给七牛云:http://assets-ok-beian-cn-idvfuof.qiniudns.com/a.jpg ,七牛云接到这个请求后会找到绑定了加速域名assets.ok-beian.cn的对象储存空间no-beian,一看这个空间里还不存在a.jpg这个文件。于是七牛云就去镜像回源URL请求这个文件,也就是 http://no-beian.net/a.jpg ,你看,绕了一圈又回来了。七牛云访问你的源站点的URL来获取这个文件,然后缓存在储存空间中。同时返回给用户。至此访问完成。一旦资源被缓存了,下一次再有用户请求 http://assets.ok-beian.cn/a.jpg 的时候,七牛云一看这文件已经缓存过了,于是不再找原主人要文件而是直接从CDN服务器返回给用户了。所以,只有第一次被访问到的资源才会请求原站点并自动缓存在CDN服务器上,一旦缓存过在过期之前就不会再次请求原站点了。直接用他们遍布全世界的CDN服务器已最快的速度返回给用户。
这就实现了CDN加速。

系列文章

Last modification:April 26, 2021
If you think my article is useful to you, please feel free to appreciate