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

2016-12-09 00:00:33 +08:00
 quietjosen

二话不说先上图:

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

有必要这么折腾吗?

先说 2 则消息提提神:

可见全站 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

好处是:

坏处是:

已有图片搬家

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

这事怎么办呢?

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

iPic Mover 更多介绍

插入新图片

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

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

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

尾巴

说说博客吧。

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

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

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

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

7150 次点击
所在节点    SSL
40 条回复
Delbert
2016-12-09 00:10:44 +08:00
表示所有的 https 链接,需要证书的隧道 vpn 通通无法访问。 HTTP 的正常,请问如何破解……
是的,连百度都没法访问了,只能用 Bing ……
quietjosen
2016-12-09 00:19:36 +08:00
@Delbert 哎,你这问题听起来好牛……
just1
2016-12-09 00:21:09 +08:00
ws1.sinaimg.cn 用 https
Delbert
2016-12-09 00:26:08 +08:00
@quietjosen 是的,因为需要用代理访问外网。想搜个东西都打不开,什么 askUbuntu ,什么 stackoverflow 。 pip 还好,可以强制 http , openstack 的源无解啊。。。只有官方源, https 的……
levie
2016-12-09 00:32:55 +08:00
我懒得折腾就国内外都用 V2EX 图床……🙈
CloudnuY
2016-12-09 00:37:58 +08:00
@Delbert 看看 VPN 的服务器能访问其他网站的 443 端口吗
Tink
2016-12-09 00:42:00 +08:00
我是 A
guofs
2016-12-09 00:49:10 +08:00
七牛 cdn 部署 https 的话也没法用免费套餐?
smallaccount
2016-12-09 00:55:18 +08:00
感谢楼主
顺便问下楼主那个上传微博图片的 python 脚本是怎么实现验证的, headers 部分
具体我也说不清楚,您不明白的话我明天用电脑再问一次
quietjosen
2016-12-09 01:13:43 +08:00
@just1 恩,貌似最近微博图床的 https 证书升级了。
quietjosen
2016-12-09 01:14:56 +08:00
@levie 其实都靠谱的,也许自己的网站倒了, V2EX 的图床也不见得会倒…
quietjosen
2016-12-09 01:15:22 +08:00
@guofs 是的,确定、肯定。
quietjosen
2016-12-09 01:16:14 +08:00
@smallaccount 并不是用 Python 实现的,而是调用 iPic 传图、基于 Swift 的。
quietjosen
2016-12-09 01:16:52 +08:00
@Tink A 记录、还是啥?
Tink
2016-12-09 01:18:04 +08:00
@quietjosen 打分
quietjosen
2016-12-09 01:18:20 +08:00
说话, V2EX 右侧的广告是非常内容相关的嘛。这个帖子在说 https 及图床的事,右侧就是 Let's Encrypt 及其他相关的链接。
quietjosen
2016-12-09 01:18:50 +08:00
@Tink 哦哦,那你比较我厉害 👍
smallaccount
2016-12-09 01:28:28 +08:00
def get_upload2weibo_cookie():
"""
获取微博 cookie
:return:
"""
headers = {
'Host': 'wb.ilib.io',
'access': '6L+Z5Liq5piv57uZSmFzb27nmoTlm77luornlKjnmoQ=',
'app': 'ipic',
'Accept': '*/*',
'User-Agent': 'iPic/120 CFNetwork/807.0.3 Darwin/16.0.0 (x86_64)',
'Accept-Language': 'en-us',
}
res = requests.get('http://wb.ilib.io/api/cookie/weibo', headers=headers).json()
return res['cookie']

这个代码是怎么搞的。。。
res = requests.get('http://wb.ilib.io/api/cookie/weibo', headers=headers).json()
这个是什么意思?
quietjosen
2016-12-09 03:10:50 +08:00
@smallaccount 这个,邮件讨论吧: iToolinbox#gmail.com
hqfzone
2016-12-09 09:12:48 +08:00
为了统一图片链接,搞跳转,有必要这么拐弯么?一条正则替换的事儿!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/326305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX