前言
前面一篇文章,我把www.tangwudi.com的导航页迁移到了cloudflare pages上(参见文章:家庭数据中心系列 使用github+cloudflare pages为www导航页搭建新家),但是,这种方式不适合我的备案域名所对应的www的主页,因为腾讯云CDN使用国内加速流量包的时候,回源host指向cloudflare上的域名会出问题(如果在cloudflare上把腾讯云回源IP加入白名单倒不是不行,但是实际体验上来说,非常不稳定,而且这种做法把国内备案域名和国外真实使用的域名扯上了关系,是有风险的)。
所以我不得不研究国内的类似github pages、cloudflare pages方式的免费的静态页面托管方案,不过转了一圈,发现完全免费的没有,Gitee Pages倒是可以,虽然最大容量和单个文件大小有限制,但是这个对我没啥影响,最不爽的要求必须实名,并且对上传内容很敏感(每次更新都要重新审查,容易部署失败,万一以后我要研究下静态博客什么的呢),而且自定义域名和自动部署都要收费,一听就很麻烦啊,特别是有了免费的github+cloudflare pages的体验后,我的眼光直接提高了很多,看不上啊。
那么如果没有好的免费方案(这个在国内的确也有点奢侈),那有没有花一点点钱就能使用的方案呢,还真有,那就是腾讯云CDN+腾讯云COS的组合方案,一年的花费9.77到29.77不等(视你本身有没有腾讯CDN包年流量包而定,像我本来就买了的,所以只需要9.77),可以得到1年期的10个G存储空间的COS存储,并且没有什么乱起八糟的限制,如果你本身没有购买腾讯云的CDN国内包,那么买一个1年期100g流量的包也不过20元,所以加起来一共是29.77元。29.77元,买不了吃亏,买不了上当,就可以有一个10G空间的静态页面托管服务,非常划算了有没有。。唯一的一点门槛,就是需要备案域名。
我刚好有,所以最终选择了这个方案。
配置流程
前置条件:现成的域名以及完成了备案
如果还没有域名,需要选择一个域名供应商进行购买(有能力白嫖免费的也行),不一定非要腾讯云的dnspod,不过备案这一步是跳不过的,因为国内CDN供应商能加速的域名必须是备案域名,例如腾讯云CDN添加加速域名的时候,如果不是备案域名会显示如下:
注:其实域名没备案却又有这种需要的直接使用github pages、cloudflare pages之类的就行了,也不需要看这篇文章了。
腾讯COS创建存储桶
按照如下图片流程在腾讯云对象存储界面创建存储桶:
上传网页目录
上传成功:
因为我要通过域名直接发布,所以文件需要位于需要根路径下,因此需要进入上传的文件夹里把所有的文件拷贝出来:
然后返回上层路径进行粘贴:
粘贴完成之后删除上传的网页目录即可,最终效果如下:
另:为什么这么麻烦?因为直接上传压缩包,然后解压貌似要收费。。而上传文件又只能上传单个文件,逼得我只能这么折腾了。其实倒是可以借助COSBrowser之类的工具进行上传,只不过我目前对COS没什么需求,只是托管个静态的首页,所以就懒得去折腾这些了,等以后有什么国内需求要做试验的时候,可以折腾一下。
注:其实如果后面采用腾讯云CDN的话,以下开启静态网站功能的步骤是可以不用配置的,因为都是腾讯系的产品,可以靠"默认域名"(内部域名)的方式沟通,不过如果是采用非腾讯云的CDN,就需要进行以下配置,所以我也还是把步骤写下来。
开启静态网站功能:
下一节会使用到"默认域名"的概念,这个默认域名其实就是前面创建存储桶最后一步那个页面里的请求域名,这个域名也可以在如下位置看到:
CDN
这里有两种方式将存储桶内容发布到腾讯云CDN里:
1、存储桶里的自定义CDN加速域名
2、内容分发网络CDN直接添加域名
"内容分发网络"-"域名管理"-"添加域名":
后续操作就跟一般的添加腾讯云CDN加速域名的步骤一样,我就不重复了。最后添加完成后需要记住红框中的CNAME地址:
CNAME地址在后续配置域名解析的时候需要,不过如果是使用的腾讯云dnspod上托管的域名,则可以一建自动添加CNAME。
域名解析
这一步就简单了,就是在自己使用的域名供应商的控制台里里添加一个CNAME记录,指向上一节最后的CNAME地址,以腾讯云dnspod为例:
这样访问abc.example.com的访问就会被发送到CDN上进行处理。
总结
使用腾讯云CDN+腾讯云COS这种方式来进行静态页面的托管,缺点和优点都很突出:
1、优点
- COS本身价格低,最大的支出项是存储空间本身的费用
标准存储容量包一年10G空间价格高达9.77元,10G空间,啥页面放不下?而如果是新用户,还有180天50g空间的免费使用额度。 - 配合腾讯CDN省去了外网流量费
腾讯COS本来也有外网流量费(昂贵,并且由于计费有2小时延误,导致直接使用COS发布外网应用时,如果遇到COS上的资源被盗链盗刷,可能会几小时损失几千上万)和读写请求费用,不过因为搭配使用了腾讯CDN,这两项费用都省了,因为CDN回源COS是内网请求,不计费,所以只需要支付CDN本身的流量费,而CDN的流量费是很多人本来就有的(比如我),并且价格本来就低,一年100g价格20元:
连我这么穷的人都买了20元防身,所以还是相当实惠的。
2、缺点
- COS默认缺乏方便的文件上传下载以及基本的文件管理功能
所以如果要经常进行COS上的文件操作,还是需要将COS的存储桶映射到本地PC上或者使用COSBrowser之类的工具进行管理。
- COS没法进行版本管理
如果这个静态页面改动少还好说(像我就是放个应付备案检查的静态页面),如果经常修改,每次都需要自己确定修改了哪些内容并选择性上传的话,还是很麻烦的,所以最好是结合其他持续集成的项目,让COS只是作为最终存储。
另外,可以在腾讯云CDN上根据自己部署的应用的特性进行一些防护性设置(防恶意流量攻击等),比如我只是放个应付备案检查的页面,所以很多参数都写得比较死,毕竟只是给检查员看的,包括:
其它还有不少选项可以当安全防护的功能来用,大家根据自己的实际情况设置即可。在国内的环境里,能用这么点钱实现静态页面托管功能,我觉得已经可以接受了。
后续我又把一些国内使用的静态站点都迁移到了COS上,至此,我所有的静态类型的站点,不管是面向国外还是国内,都托管到了云上,还真是方便啊,下一步我也会搞一套静态博客,把wordpress里的文章导到静态博客里,然后直接托管到网上,作为冗余站点太完美了,比现在用腾讯云服务器来做镜像站点方便省事了好多。