CODING Pages 静态网站升级腾讯云新版踩坑小记

自己的踩坑记录证明域名未备案的同学就不要升级了,新版需要付费,但升级后强制的境外 CDN 加速导致访问速度反而不如旧版快。

升级背景

之前把博客双部署到了 CODING 静态网站和 GitHub Pages,国内的访问速度快了不少。前几天登录 CODING 后台,突然发现多了一个新版升级提醒。

升级提醒

新版最大的变化就是同腾讯云进行了打通,直接把网站放到了腾讯云的对象存储 COS 上,其他 CDN 加速、SSL 证书管理也是腾讯云的功能。

新版的变化及优势

新版开始收费了

CODING Pages 依托腾讯云资源提供相关静态托管能力,CODING 平台本身不收取任何费用。该产品使用了腾讯云对象存储 COS、内容分发网络 CDN、SSL 证书产品,其中 COS 和 CDN 采用用量计费模式,SSL 证书免费,所使用到的其他相关腾讯云产品本身亦会有一定的免费额度。

新版因为使用了腾讯云的相关资料,所以要开始收费了。对于收费,我是能够接受的,前提是能够提供比免费更好的服务。我的图床就是使用的腾讯云的对象存储,加载速度很快,一个月几毛钱的费用低得基本可以忽略。

升级流程

新版升级界面如下:

新版升级设置界面

因为新版是基于腾讯云的,所以升级需要先在腾讯云进行实名认证并授予相关权限。我因为之前图床就是用的腾讯云对象存储,所以已经实名过了。

腾讯云服务授权

之前 CODING Pages 旧版是部署在腾讯云新加坡节点,现在新版部署节点可选香港、北京、上海、广州四个,但未备案域名只能选香港。

节点选择提醒

添加自定义域名前,需要前往腾讯云开启 CDN 功能,这一步就是我觉得新版最大的坑

下一步去域名托管商更改解析记录,解析记录值都是指向了 cdn.dnsv1.com,这也是为什么需要开启 CDN 功能的原因。

部署的时候,「网站类型」我最开始选的是「Hexo」,结果部署失败,部署日志也不知道抽啥风,一直显示不出来,原因也不好排查。我尝试将网站类型改为「静态网站」,重新部署就成功了。

这 CDN 不能要

新版升级完成后,立马测了一波速,然后被结果给吓到了,从之前的一片绿油油变成了一片惨淡的黄色,访问速度下降了不止一点半点。这就很费解了,同样都是腾讯云,之前部署在新加坡节点,现在搬到香港节点了,速度不升反降是什么情况。

新版开启 CDN 测速结果

检查解析 IP,发现域名全都被解析到了德国、爱尔兰、美国,和想象中的香港地址完全不是一回事。

新版开启 CDN 域名解析结果

这种情况我估摸着肯定是 CDN 的锅,去腾讯云后台一检查,发现已经开启的 CDN 设置的服务区域是「中国境外」。我想当然地以为「中国境外」的含义是指只有从国外访问网站的时候才会通过 CDN 访问,国内则是直接访问香港源站,这样虽然国内享受不到 CDN 加速,国外我设置是解析到 GitHub Pages,也用不上,但想着无非就是个鸡肋而已。

但一查文档,发现自己还是太单纯了:

「中国境外」:全球用户访问均会调度至中国境外的加速节点进行服务。

「中国境外」

也就是说,不管是从国内还是国外访问,都会被调度到国外的 CDN 加速节点进行接入,想不经过 CDN 直接访问香港源站都不行。而比较符合我想要的效果的「全球」则需要域名进行备案之后才能开启,未备案域名开启 CDN 的话就只能选「中国境外」

本来是用来加快访问速度的 CDN,对于使用未备案域名的博客来说,已经不仅仅是鸡肋了,反而是拖累。本来直接访问香港就能解决的事情,现在非得绕道德国、爱尔兰、美国才行,这访问速度能快起来才是怪事。

尝试直连香港源站

既然这是 CDN 导致的,那我把 CDN 直接给关了,直连香港源站不就行了?

关闭 CDN

进入腾讯云后台–>「内容分发网络」–>「域名管理」,关闭 CDN 加速。

关闭 CDN

更改域名解析记录

在 DNSPod 里将国内访问解析到 CODING 提供的默认访问地址,此时再检查 DNS 解析结果发现就全部都指向了香港的 IP,达到了自己想要的效果。

致命的证书问题

设置成直接访问香港源站后,速度果不其然就上来了,比访问新加坡节点速度还要快上一点。但很快就出现了一个更加严重的问题——证书错误。

新版申请的 SSL 证书是和 CDN 绑定在一起的,在腾讯云的证书管理里面只能部署到 CDN,而我把 CDN 关闭了,现在直接访问的是香港源站。源站的证书是颁给 *.cdn.my.qcloud 的,和我的域名不一致,这就会导致浏览器直接报警说网站不安全,这是不可接受的。我尝试解决这个问题,但无奈水平有限,最后也没能找到解决的办法。如果有知道如何解决证书问题的同学,麻烦指导我一下,不甚感激。

现在情况就是如果想要实现自定义域名 HTTPS 访问,就需要打开 CDN,打开 CDN 就意味着牺牲访问速度,这还是在 CDN 和 COS 需要付费的情况下。矛盾无法调和,所以最后我只能又回退到旧版了,幸好 CODING 目前还没有关闭旧版的入口,给了我一个反悔的机会。

总结

花了差不多一天的时间,最后还是老老实实回到了旧版,相当于一天白折腾了。域名没有进行备案的话,在国内使用不方便的地方真的太多了。CODING 新版静态网站我觉得对于使用已备案域名的同学来说还是不错的,配置简单,CDN 加速、SSL 证书一步到位。但同样的对于这些同学来说可供选择的方案太多了,免费的也有不少,CODING 的新版并没有太大的吸引力。

而对于未备案域名的同学新版则非常不友好,完全是负优化,完全没有升级的必要,谁会花钱找罪受呢。CODING 工程师说旧版后续会下线,到时候如果自定义域名的问题没有得到改善的话,可能就需要考虑迁移平台了。现在旧版还能用就先用着。

我向 CODING 反馈了自定义域名的问题,希望能同旧版一样使用 Let’s Encrypt 的证书,不要强行同腾讯云的 CDN 加速绑定在一起,后续如果有进一步的反馈结果的话我会同步到博客中。

参考链接

官方静态网站服务升级指南