Hexo+Github Pages CDN & HTTPS

1,494 阅读4分钟

在Hexo和Github Pages的加持下,现在我们可以只专注在写Blog上,而不用额外的精力管网站发布和运营。一起看起来很美好,然而,一段时间过去了,会发现文章没写几篇,网站倒是卡成姥爷,浏览器还一直显示不安全。需要一些手段来解决下。

名词概念

CDN

全称是Content Delivery Network,最小CDN网络可以由一个DNS服务器和几台缓存服务器组成,不同地区的访问请求,CDN会智能安排最近的服务器响应,而且还有Cache来加速。所以CDN的效果取决于DNS服务器调度算法和缓存服务器的数量以及质量,CDN的作用域是域名而不是服务器。

DNS

Domain Name System是互联网的一项服务,它作为域名和IP地址互相映射的一个分布式系统,让用户更方便访问互联网。互联网通信是只认IP地址的,但一串数字人是记不住的,人容易记住的是apple.com这样的单词,这个叫域名,让电脑知道apple.com就是要访问122.224.45.229,就通过DNS域名解析系统。DNS系统中,常见的资源记录类型有:

  • 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
  • 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
  • IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
  • 服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等

CNAME

想想为啥要用CNAME。用户输入的是xxx.com,打开的是xxx.github.io网页,这中间的魔法就是通过CNAME实现的,我们在DNS域名解析服务里设定了解析规则,*和www开头的记录都重定向到hxx.github.io域名。这里用CNAME的好处是github换IP操作对我们透明,从而不需要手动改配置。

实施

有以上储备后,就可以开搞了。诉求是CDN和HTTPS加密,因为域名是万网(阿里云)买的,所以先看了一眼阿里云SSL证书价格,最便宜1256一年,emmm,这不科学,Blog我们当然是要免费的。查阅一番,Cloudflare评价不错。

打开Cloudflare的官网,竟然对中文有支持,赞👍

image-20190818171638362

注册Cloudflare

这步比较简单,按提示注册就行

配置Site

注册成功就会让你Add Site, 输入你的域名xxx.com,选套餐,当然是Free

更改域名商

image-20190818172515598

意思是去你的域名服务商更改nameservers,熟练登入阿里云,选择域名点击最右边域名管理

image-20190818172944688

点击修改DNS,修改成james开头的地址就行,改完点一下同步,一般5分钟内生效。

image-20190818173030848

验证是否生效

左上角Cloudflare回主页

image-20190818173347505

或者命令行:用dig www.hxx.com

image-20190818173554830

搜索一下ip104.31.94.161,确认是Cloudflare的,现在你打开Blog的页面速度应该有数量级的提升!

对比效果

Before,2分钟开一个网页,实际上是对人耐心的一种考验

image-20190818173909538

After,可以说是秒开了,而且有无翻墙,效果一致,193个数据中心不是白吹的,美滋滋。

image-20190818174041150

地址栏显示不安全

image-20190818180518257

我们的静态页面当然是绿色无害的,但由于没开启HTTPS被Chrome标记为不安全。怎么部署HTTPS有好多方案,这里不多讲,Blog我们就要5分钟能上手的😁

还是Cloudflare,选择Crypto。

image-20190818175035201

解释一下右边的类型

  • Flexible SSL:使用Cloudflare提供的免费证书,用户到Cloudflare采用加密连接,从Cloudflare到主机(github.io)不走加密连接。

  • Full SSL:需要一个SSL证书,但是Cloudflare不会校验证书的来源

  • Full SSL(Strict):需要SSL证书,并且会校验证书的来源是不是第三方合法机构签署颁发

Origin Certificates,我们让Cloudflare帮生成一个

Always Use HTTPS,打开

HSTS可以打开,按照它推荐的设置

Opportunistic Encryption,打开

Onion Routing,打开

Automatic HTTPS Rewrites,打开

这个配置改动后,Cloudflare表示最长需要24小时生效,实际上半个小时左右就ok,等待时间可以玩玩Cloudflare的其他功能,毕竟不花钱,推荐配置下Speed

image-20190818203301535

半个小时后

强制刷新一下页面,确认效果

image-20190818180338211

@子路宇, 本文出自blog,欢迎转载,转载请保留出处。

参考

www.cloudflare.com

cloud.tencent.com/developer/a…