前段时间,team使用了七牛镜像的功能,用到了,就决定了解一下。

全站HTTPS成功后,页面仍然看不到标志性的小绿锁,打开devtool,看到一行warning

七牛官网的说明如下:

图片 1

设置镜像存储,源站资源(文件/图片等)根据初次访问自动同步到七牛云存储,数据平滑迁移。可使用绑定的自定义域名访问镜像存储的源站资源。

image.png

配置镜像存储后,因为镜像源和镜像空间内容基本一致,将可能导致搜索引擎对源站进行封锁,可配置搜索引擎的
robots.txt 文件避免此情况发生。

是由于全站https后,仍然引用的http的图片资源。接下来记录下配置https访问七牛资源的步骤。

配置方式如下:

业务模型:

图片 2

image.png

按照《七牛镜像存储使用手册》中所述,分为三个步骤

登陆七牛,选中一个存储对象,点击存储镜像,输入镜像源,也就是你网站的地址,点击保存设置即可。页面如下:

配置自定义域名

需要给七牛图片空间(如 image1)配置一个自定义域名(如,image11.abc.com)

  1. 先在七牛购买证书,补全域名信息后完成购买。购买完成后出现如下信息,

图片 3

image.png

  1. 在自己的DNS控制台增加一个二级域名image11.abc.com,然后在自己的服务器配置二级域名image11.abc.com(服务器配置此处不作赘述)。并在上图红线所示的目录创建文件fileauth.txt,将验证文件值写入文件,重启服务器。在访问http://image11.abc.com/.well-known/pki-validation/fileauth.txt时,能看到验证文件值。

注:
此处与阿里云证书购买不同,没有提示配置服务器HTTPS的步骤(也不需要),不需要下载证书,因为后面会配置CNAME的记录值到七牛存储空间,不需要进一步配置自己的服务器,仅保证能访问到fileauth.txt的内容就可以了。

  1. 验证成功后,进入需要操作的图片空间,点击域名绑定,在加速域名的输入框输入image11.abc.com通信协议选择HTTPS,再选择刚才的购买的证书。选择好其他配置项后,点击创建

图片 4

将非结构化数据的源站配置为七牛空间的镜像源站。

选择空间,然后在空间的概览页面里,找到镜像存储,然后在镜像源对话框内填入用于回源抓取资源的源站域名。比如将空间
image1
的镜像源站配置为http://image1.abc.com。

假设我们输入的镜像源是
,你的七牛存储对象的地址是 xxx.qiniu.com ,然后你可以访问
xxx.qiniu.com/830384/o_qiniu-page.png ,其实他最终访问的是

,也就是上面的那张图片。而且你会在你的存储对象中看到相应的图片。

配置CNAME

自定义域名审核通过之后,在客户的DNS服务设置那里,就可以根据审核通过后提示的CNAME目标来将自定义域名绑
定到七牛的空间域名。

图片 5

image.png

看到上图后,就说明配置成功了,然后返回自己的服务器,可以将
image11.abc.com 二级域名的配置注释掉。
然后还可以在存储空间的内容管理选择默认域名外链(此步骤非必须)。

至此就完成了,可以尝试访问以下https://image11.abc.com/path/1234567.jpg,看看是否有小绿锁出现。

本文记录个人配置的过程,有错误的地方,还各位望指正。

本文还参考了:
如何配置域名的
CNAME
融合CDN快速入门

同样如果我们的地址是一个 action,action
的作用是输出一个图片,这样的话是同样可行的。在 action 中可以使用如下 php
代码:

$filename = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQF48ToAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0xrUEhlbDdtUjRRXy01YUJqRzFLAAIEh7MhVwMEECcAAA==';
$src = imagecreatefromjpeg($filename);
header('Content-Type: image/jpeg');
imagejpeg($src, null, 100);
imagedestroy($src);

上面的例子只是简单的读取图片数据并输出,但在真正的项目中你可能会遇到很多图片的操作,比如两张图片合并,在图片上写入文字等等。

关于这方面的内容,你可以查看相关的php文档 GD
和图像处理函数

需要注意以下几点:

  1. 如果源站的 URL
    是类似这样的:
    ,那么镜像存储会将文件 d.txt 抓取过来,并在七牛保存为a/b/c/d.txt
    (在七牛云存储中称为 key),忽略问号后面的参数。如果源站的 URL
    是类似这样的:
    ,那么镜像存储会将访问该 URL 得到的结果保存在七牛云存储,但是保存的
    key 为空的 key 值(不是不存在)。

  2. 七牛的镜像存储看起来和传统的 CDN
    比较像,两种都会在加速节点数据不存在的时候回源站抓取。不同之处在于,镜像存储是存储(和普通的存储没什么不同,镜像功能只是存储的一个特性),不是缓存,故此镜像存储对每个资源来说只回源一次,后续访问的时候就不再回源了。所以源站的数据发生变化的时候,你需要主动去删除镜像存储里面的文件,从而达到强制刷新的目的。

  3. 如果终端用户第一次访问某个资源,终端用户首先从七牛服务器上访问资源,再让七牛的服务器回源站取资源,然后将取回的资源缓存在七牛云存储上。因此,第一次访问会有一定的延时,可能比从源站取稍微慢一点,这是正常的,但是第二次第三次访问就可以直接从七牛的
    CDN
    上取,一般情况下比从源站取资源会快很多。也正因为镜像存储第一次取资源时会有延时,因此不推荐镜像文件大小超过
    5M 的大文件资源,否则第一次访问会很慢或者出现服务器超时等错误。

  4. 大多数搜索引擎都提供有能够检测镜象站点的适当的过滤系统,一旦发觉镜象站点,则源站点和镜象站点都会被从索引数据库中删除。可以给镜像空间独立上传一个
    robots.txt
    禁止搜索引擎索引。可使用七牛提供的:robots.txt模板文件。也可以新建一个二级域名,如img.ludou.org,把要CDN的文件放到这个二级域名下,然后将这个二级域名镜像到七牛。这样就不会镜像到主站,被搜索引擎误会了。

参考摘取:

使用七牛的镜像存储功能可能会导致网站被K
七牛的镜像存储介绍和其原理
镜像存储功能在源站 URL
含有问号时的抓取资源规则
镜像存储与 qrsync
数据同步的使用

相关文章