大数据

说说我的网站升级 https、及图床搬家历程

二话不说先上图:

是的,升级完之后得到的就上面几把小绿锁。当然,只是几个小站,如果看官误解为大站的 https 架构升级,抱歉了…

有必要这么折腾吗?

先说 2 则消息提提神:

  • 2017 年 1 月 1 日苹果 iOS 应用推行 ATS 安全标准,将强制使用 HTTPS 安全连接;
  • 谷歌 Chrome 将把所有的 HTTP 网站标记为「不安全」

可见全站 HTTPS 化是大势所趋。就算是小博客、小网站,也不想被拍为「不安全」吧。于是,在 2016 年的尾巴时,折腾了一把。

Https 证书

其实,更应该说「免费」的 Https 证书更合适。因为付费的证书其实很多,而我等小博主,还是用用免费的好了。可能大家都知道,目前最有名的免费证书就是 Let’s Encrypt 了(另外一个免费、但有黑历史的我就不说了)

可以使用 Certbot 来自动更新 Let’s Encrypt 证书,服务器端我用的是 Ubuntu,直接照着官网教程就可以生成证书了:https://certbot.eff.org/#ubuntuxenial-nginx

有了证书之后,就是如何应用到网站中,这个就要看大家具体是如何搭建、托管博客的。我是用的 Nginx,照着这里的步骤就可以了:https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04

有了上面这 2 步,就完成 https 升级本身的在部分事情了。可能你并不知道,https 和 https 也是不同的,主要是安全级别上不一样。具体的,可以到一些测试网站上查查自己的 https 是什么级别,比如 https://www.ssllabs.com/ssltest/analyze.html 我的小站是 A-,虽然可以再加把劲升级到 A+,想想 2/8 原则也就算了。

Https 与小绿锁

做了上面的事后,浏览器中并不一定会显示可爱的小绿锁。为什么?因为网站可以还引用了别的 http 资源,比如 js、css、图片、等等。必须全站资源均是 https,才会在浏览器地址显示小绿锁。

图床搬家

好了,来到迁移最麻烦的部分:图床搬家。因为自己的博客已经有好几年了,搬家 N 次,还由 WordPress 迁移至 Markdown (Hexo 引擎 + Next 主题),其中混杂着又拍云、新浪微博图床、七牛、一般图片、等各种来源的图片,想把这些图片全找出来、重新上传至支持 https 的图床、更新文档中的链接,还是挺绝望的。

不管怎样,已经搞定了,来回顾下我的方案吧。

图床选择

国内

国内选的是 七牛

另外一个强劲的候选是阿里云 OSS,因为我总是觉得阿里云 OSS 比七牛快(之前的一些感性经验,并无实测数据,况且这和网络情况严重相关,在你那快、而你的用户不一定快,很难有权威的测试数据)

最后选择七牛最大的原因是:,也就是价格。阿里云 OSS 的流量价格大概是七牛的 2 倍,即使买流量包也比七牛稍贵些。具体的,大家可以看下面的官网链接:

需要说明的是,七牛有所谓的免费流量,但这免费流量只适用于 http 流量、不适用于 https 流量,算是个小坑 + 鸡贼吧。

确定图床后,就在七牛上新创建了资源。并没有使用自己域名的 https 链接,因为没有备案(备案好可怕…),直接使用了七牛的 https 二级链接,如 https://xxxx.qnssl.com

国外

国外选的是 Flickr

存储方面,Flickr 有 1T 空间,绝对够用了。

速度方面,之前在 http://www.17ce.com/ 上测试了下,即使是在国内,Flickr 的访问速度尚可、比 Imgur 快;国外应该也没问题。

于是,也就懒得再去用 Amazon S3 之类的专业图床,直接定 Flickr 了,并且链接还是支持 https 的。

统一图片链接

这有什么说的呢?

主要是为可能的再次搬家埋伏笔。如果直接使用七牛的二级链接( 如 https://xxx.qnss.com ),那么下次如果需要搬家,就要把之前文档中的链接全部更新,或者使用 Nginx 相关的代理、跳转机制,总是有些麻烦,所以用了一个自己的域名进行跳转。

方法就是,先确定一个固定的图片域名:https://p.ilib.io 然后将其重定向至 https://xxxx.qnss.com 具体的,就是在 Nginx 中配置:

rewrite ^/cn/(.*)$ https://xxx.qnssl.com/$1;

这样,访问如 https://p.ilib.io/cn/abc.jpg 时,会重定向至 https://xxx.qnssl.com/abc.jpg

好处是:

  • 灵活,之后如果再次搬家,只要修改这里的配置即可;
  • 另外,还可以为国外图床配置对应的跳转。

坏处是:

  • 慢了一点,因为要多进行一次 p.ilib.io 的域名解析。
  • 不过,这一方案也可以用域名解析的显式 URL 跳转进行改进,会快很多。只是我现在用的是 DNSPod 解析域名,需要 30 天后才能进行显式 URL 跳转,到时再更新吧。

已有图片搬家

新图床确定了,接下来就是要把已有的 Markdown 文件中的图片迁移至新图床。

这事怎么办呢?

为了这事,我专门做了个 App: iPic Mover,可以选择 Markdown 所在目录,一键迁移 Markdown 中所有图片至新图床,具体看图:

iPic Mover 更多介绍

插入新图片

到这里,https 证书配置好了、已有图片也搬家了,已经可以看到可爱的小绿锁了。那么,之后新的图片,该怎么插入到 Markdown 文件中呢?毕竟上面说了,又是七牛、又是 Flickr 的,直接插图还是挺麻烦的。

还好,有了 iPic,可以一键上传图片至图床、生成 Markdown 链接。

晒晒我的图床吧(有些是测试用):

尾巴

说说博客吧。

折腾这么多,就为了小绿锁,值吗?尤其,现在还有人写博客吗?还需要专门搞个图床搬家的工具吗?

诚然,现在是快消费时代,大家的注意力是涣散的,看个搞笑视频都要快进,更别说读长文,更更别说写长文了,更更更别说为文章配个合适的图。

但,反过来说,大家对信息的渴求是一贯的,在网上搜索信息,都想能最快的得到权威的、组织优良的答案。尤其是程序员这个行当,简直是面向 Google 编程。而很多 Google 给出的答案,都是一些优秀的博客。

所以,我相信博客依然会有其一席之地;而写博客的人,值得被尊重、被关注,值得拥有趁手的工具。