使用OSS+CDN搭建极速博客网站


在之前我写了一篇关于搭建博客网站方式的比较,感兴趣的可以参考一下:搭建个人博客比较

直接使用阿里云的OSS+CDN的方案有几大好处:

  • 成本低廉。OSS+CDN部署自己的网站每个月的花费远比自己买ECS服务器部署网站花费要少得多
  • 大幅降低运维成本。直接使用现成的云服务,无需花精力去维护ECS。
  • 极高的可用性。无论阿里云的OSS还是CDN,都已经做好了高可用性,几乎可以保证网站始终可访问
  • 极高的访问速度。ECS带宽毕竟有限的,高带宽意味着超高的费用。但是用OSS+CDN这种天然分布式的架构部署网站很轻松的解决了带宽问题,极大地提升了用户的访问体验。

一、OSS与CDN的购买与流量计费

1.购买之前的准备

  • 足够的余额(流量不大的话100元余额够用很多月,比ECS便宜得多)
  • 备案过的域名(国内云厂商CDN基本都需要绑定自己的域名,国内要求必须备案,所以务必先备案自己的域名)
  • 备案可以参考 ICP备案前准备

2.购买OSS与CDN

对象存储OSS服务的基础计费项包括:存储容量,流量,请求次数。此外,OSS还提供存储数据处理服务(如图片处理服务等),会根据您的使用情况单独计量计费,不使用不计费。

(1)访问阿里云OSS价格方案,选择配置

价格图示例如下(请参考官网实时价格):

注意:要使用OSS,需要先创建Bucket

目前,同一地域下每个账号最多可创建30个Bucket。Bucket 的容量无上限,且OSS的读写效率不会因为单个目录下存在大量文件而受到影响,每个bucket可以看做一个文件夹.

(2)访问阿里云CDN价格方案,选择配置

价格图示例如下(请参考官网实时价格):

注意:OSS和CDN都是后付费的服务,因此需要保证账户有足够的余额

3.OSS+CDN的流量计费方式

不管是阿里云还是腾讯云,在CDN的收费模式上应该是一样的。

OSS到CDN间的流量会收费,CDN流出流量会收费,一般情况下,CDN命中率应该是90%左右,还有10%需要回源去OSS取,也就是说OSS最多需要付出的流量费大概约等于CDN流量的10%加OSS存储文件的大小。

由于CDN的单价要低于OSS;理论上使用CDN+OSS,比直接使用OSS要更节省流量费用。

比如,你的网站一个小时有100GB的流量,OSS的单价是0.5元/GB,那你的流量费用是:100x0.5=50元。而使用了CDN,命中率按80%来算;表示OSS只会产生20GB的流量,而CDN流量为0.24元/GB,CDN回源费用为0.15元,则你的流量费用是:100x0.24+20x0.15=27元。

而CDN缓存命中率与内容热点等都有关系,如果你的CDN缓存命中不高的话,可以参考我之前写的一篇博文:CDN访问慢的分析和优化思路

CDN的缓存命中率经过精心优化后,理论上可以达到90%以上,比如我的CDN缓存命中率经过优化后如下图:

只要CDN缓存命中率高,使用CDN就越节省费用;命中率低于60%的,建议直接使用OSS。

二、OSS配置

1.创建 OSS Bucket

  • Bucket 名称:可以根据自己喜好任意命名但要求必须唯一
  • 区域:无特殊要求的话可以随意选择,但一般会选择离自己近的(如果需要配合ECS走内网代理的话,注意和ECS为同一区域)
  • 存储类型:一般选择标准存储,因为博客在后期的访问量还是有的
  • 读写权限:我的读写权限为公共读, 你可以配置为私有, 不过私有的访问起来需要凭证, 麻烦点, 可以配置为公共读, 然后设置 referer(在基础设置 -> 防盗链) 来限制访问

注意:一定不能设置为公共读写!

2.配置OSS为静态网站托管模式

默认首页设置为index.html(必须设置),默认 404 页可设置也可以不设置

这项设置以前只能应用于首页,现在 OSS 升级后次级目录也支持跳转,正常情况下无需改动 文件。但如果使用了 CDN,为避免出现莫名其妙的缓存问题,最好以默认页的形式访问网站。

3.用户域名绑定

由于阿里云出了新的规定,自 2018 年 8 月 13 日起,我们使用 OSS 默认域名访问中国大陆、中国香港地区 OSS 上的网页类型文件(mimetype 为 text/html,扩展名包括 htm、html、jsp、plg、htx、stm),Response Header 中会自动加上Content-Disposition:’attachment=filename;’。即从浏览器访问网页类型文件时,不会显示文件内容,而是以附件形式进行下载。所以,我们必须绑定我们自己备案的域名,才能够正常访问网页。

点击 OSS 控制台左侧的Bucket名称,选择域名管理 - 绑定用户域名,绑定用户域名,如果域名是万网(现已被阿里云收购)购买,这里可以自动添加 CNAME 记录,否则需要在域名供应商手动做 CNAME 解析。

4.配置解析域名指向OSS的域名

复制我们的oss的域名,打开云解析DNS页面,之后点击添加记录:

  • 记录类型:因为我们需要指向我们的oss域名所以此处必须为CNAME
  • 主机记录:根据自己域名情况填写
  • 解析线路:默认就好
  • 记录值:即为我们第一步中复制的OSS域名

等待 1~2 分钟 CNAME 生效,打开控制台 ping 用户域名,检查是否已定向到 OSS 地址.aliyuncs.com

CNAME 是域名解析的一种,可以理解为把域名重定向到新的地址。

5.配置OSS防盗链

不配置OSS防盗链的话,网站可能会被盗链。这样子对方使用你的OSS资源,而把流量费用算在自己头上,很冤很亏。

具体配置请参考博文:OSS防盗链配置

三、CDN配置

1.使用CDN主要有三个好处:

  1. 利用CDN的回源流量费用和CDN本身的流量费用都低于OSS的外网流出费用来降低我们的流量成本。OSS 的源文件会被CDN分发到全国的服务器节点上,用户访问时,访问到的是CDN自动给用户分配的最近的节点数据,并不会访问到OSS本身的数据,从而节约了OSS的外网流出流量费用。

  2. 因为全国大部分地区都有阿里的CDN节点,CDN又会给用户分配最近的节点,所以可以明显提升用户的访问速度。

  3. 隐藏真实IP,提高网站被攻击的门槛。

2.配置CDN

(1)域名配置

点击 OSS 控制台左侧你的Bucket名称,选择域名管理,找到已绑定的用户域名 ,点击阿里云 CDN 加速标签下的未配置按钮:

上图有一项 CDN 缓存自动刷新非常好用,等完成了 CDN 配置之后记得回来这个页面,把开关打开

在弹出的新页面配置 CDN:

填写信息说明:

  • 加速域名, 填写你需要加速的域名, 如 www.kingcrown.top
  • 业务类型为图片小文件类型
  • 源站类型为 OSS, 选择刚刚在上方创建的 OSS 的域名
  • 需要 HTTPS, 端口选择 443 端口, 否则选择 80 端口即可

选择 443 端口之后会出现 回源默认不携带SNI信息 什么是 SNI?, 等会儿要配置 CDN 的 HTTPS 证书, 这里可以忽略这个提示。

CDN 的加速区域可以理解为访客区域,如果想让海外用户也得到加速效果,可以选择全球

(2)提交之后进入审核阶段并获取阿里云分配的 CNAME:

提交之后会进入审核阶段, 稍等一会儿(很快), 就会审核通过.

审核通过状态为配置中, 稍等一会儿, 等待阿里云系统分配 CNAME, 分配完成:

可以看到加速域名对应的 CNAME, 复制后进入云解析 DNS 配置域名解析:

  • 记录类型:必须指定为 CNAME
  • 主机记录:填写要加速的域名, 我这里就填写了www
  • 解析线路:默认就好
  • 记录值:填写在 CDN 域名管理中分配的域名, 就是刚刚复制的域名
  • TTL 值:域名纪录的最长缓存时间, 默认的10分钟也可

添加完成后在OSS上的域名配置里可以看见完整的域名->CDN域名->OSS域名的解析流程图:

(3)性能优化

个人建议勾选的选项,可以减少部分带宽

保留参数:

Brotli压缩(比智能压缩更先进的算法):

页面优化:

如果还需要更多优化,请参考我的博文:CDN访问慢的分析和优化思路

不配置https的话,OSS+CDN的配置到这就结束了。

(4)配置全站https

回到 CDN -> 域名管理->点击配置->HTTPS配置:

  • 配置 HTTPS, 选择开启, 选择自定义上传证书, 给证书起个名字,将申请的 HTTPS 证书的公钥和私钥分别拷贝到对应的输入框内

  • 云厂商一般都有免费的SSL证书,可以选择开通

    oss管理控制台->域名管理得右上角有个购买云盾证书服务,点击进去便可选择免费版本。
    购买成功后,我们在SSL证书管理控制台便可以看到我们的https证书,将这个证书部署到cdn即可。
    最后我们便可以通过https协议来访问我们的网站了

以阿里云为例,这是下发后的SSL证书:

然后在CDN的HTTPS配置中,选择配置HTTPS:

并且配置强制跳转和开启HTTP2协议:

为了实现全链路 SSL,顺便把回源协议也设置为 HTTPS

ping网站域名,看看一系列的配置后,是否能正常访问到

  • 受忙时/闲时影响,ms会略有波动,但波动范围一般不超过20ms

开通Https后需要支付https请求费用,不过非常的便宜

四、上传/更新网站

到此为止OSS+CDN的部分已经配置完毕了,只要把静态页面上传到OSS上就搞定了。建议通过oss客户端上传,可以支持批量拖拽上传,而不是在OSS控制台上一个一个上传。

这里我推荐阿里云官方的开源项目oss-browser,因为这个客户端可以跨平台,并且支持记录AK,使用上很方便。

安装完成之后,输入AccessKeyAccessKeySecret登录即可,其他都是可选项.

AccessKeyAccessKeySecret需要在云厂商的个人中心中找到,这里以阿里云为例:

点开后获得AccessKeyAccessKeySecret

之后登录oss-browser,界面如下图:

  • 可以新建Bucket、上传文件、上传文件夹等等

上传文件至 OSS 不收任何费用

每次上传/更新网站后急于要刷新缓存的话,那就进入CDN的控制台,点击刷新,输入一下要刷新的URL路径即可:

结语

  • 本篇文章算下来的话,需要支付一些费用,请了解后再选择要不要使用
  • OSS资源存储包+CDN回源流量+CDN流量+HTTPS请求费
  • 一套算起来其实费用挺少的,参考本文中的流量计算方法

文章作者: Mr.Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Mr.Wang !
评论
 上一篇
OSS防盗链配置 OSS防盗链配置
在OSS的配置中,防盗链的配置也很重要,这样可以有效防范恶意刷流量的行为。
2020-05-04
下一篇 
Linux基础命令小结 Linux基础命令小结
Linux是网站及服务器开发最常见的操作系统之一,而对于命令的熟练程度也是区分操作Linux水平的重要指标之一。每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,但都会用到基础命令。
2020-05-02
  目录