网站网络结构变更记录
前些日子瞎整网络配置导致国内HTTPS证书掉了快5个月没发现,今天就来唠唠是怎么回事,顺带讲点陈年旧事
陈年旧事
最初的网站是托管在Gitee上的,那时候我读高三,自己折腾Hexo后部署到Gitee Page上。Gitee Page的速度很快,但要使用自己的域名的话,好像费用得每年100来块(具体价格不记得了,反正只记得价格比服务器贵),而且还需要自行处理ICP备案。后面也曾经试过Github Page + Cloudflare加速,但这一套回国速度依然很慢。这个问题一直到我买了腾讯云轻量云主机才解决——当时学生优惠是真的便宜,一口气就买了四年
配置Cloudflare境外加速
腾讯云轻量主机我个人是很满意的——不仅托管了我的博客,我的大创项目,以及CTF测试靶场都跑在上面运行。整个运营流程也十分平稳,网站的最大改动,也不过是我大三的时候把静态管理从Nginx切换到Caddy——这么做的主要原因是腾讯云不提供一年的SSL证书😅而Caddy能够实现证书自动续签
去到澳洲以后,发现访问速度其实不太行,不做加速需要转个4到5s才出来。对于这个问题,做了两方面的改进
- 将网站框架转为Astro,详见:博客重构:从Hexo到Astro
- 配置Cloudflare境外加速
对于2,网络上有很多教程可以参考,思路基本如下:
- 另外购买一个域名,托管到CloudFlare上
- 在Cloudflare的SSL/TLS的“自定义主机名”中设置一个回退源子域名,然后把需要加速的域名的境外DNS解析改为CNAME,解析到该子域名上
- 回退源子域名绑定到原站
一切都很顺利——直到有一天突发奇想把域名路径从www.mocusez.site改为mocusez.site的时候遇到了麻烦:Caddy如果套上CloudFlare后似乎就不能给mocusez.site这个根域名发证书,当时的解决方案是先拿着腾讯云的证书手动续上
但到了今年3月,我忘记续上了,于是乎——我在澳洲能顺利的访问网站(CloudFlare自己发证书了),但国内的HTTPS早就过期了😫直到这两天才发现这个问题
于是咬咬牙,上了腾讯Edgeone的车
启用腾讯EdgeOne
不得不说价格还可以:丐版的话,新用户42元包年,如果有活动续费的话还可以55元包年。而且最近似乎有免费活动可以体验,但懒得做任务了,直接爆点米上车😆
至于配置啥的忘记截图了,这列就不贴图了😂就说说其中踩的坑吧
不知道是不是Bug——如果CDN没缓存上,很高概率直接报302重定向过多
这个问题实际上是Caddy没配置好,解决方案有两种:
- 另外开一个端口HTTP回源,通过Host过滤请求
- HTTPS回源就没问题——Caddy无法通过Let’s Encrypt的acme,但ZeroSSL的能过,这样就可以解决HTTPS续签的问题
以及SignelTel(澳洲ISP服务商)默认的DNS更新贼慢,换成Cloudflare DoH后情况才得到改善——就说为什么去年加急更新的网站,导师刷新不出来无法访问
Brave浏览器的缓存可能导致CDN更改情况无法及时显现,需要用curl测才能查出问题
其实速度赶不上CloudFlare——用CloudFlare在悉尼的Ping速度基本不超过30ms,但也比不挂EdgeOne直连的400ms要快
让国内的朋友测了下,EdgeOne可以提供IPv6支持,这点就很棒😋
还有记得切换下数据库——单机情况下数据库最好直接写IP,写域名的直接失联
结语
总之,最后的方案是:主站和我的记账系统(这个记账系统也有些来头,反向代理也是各种各样的问题,这次上EdgeOne顺道解决这个问题)上EdgeOne,其他图床和Zotero依然走CloudFlare
这种事情可以说都是没事找事折腾出来的😂可能还有个问题,是我Caddy更新不及时导致使用Cloudflare境外分流无法给根域获得证书
而且如果是纯静态的话,也可以直接走EdgeOne Page,就不用出服务器的钱了,也没有Caddy配置的那么多事情
这里挂一个大佬用Caddy自建CDN的解决方案,以后有机会可以试试