TL;DR

本站已从 境内源站 + EdgeOne CDN 改为 EdgeOne Pages + Cloudflare Pages + geoDNS 分流。

你可以在页面左下角看到当前使用的节点(境内 EO / 境外 CF)。

更新后境外立即生效,境内可能有最多 1 小时缓存。如遇旧内容,按 Ctrl + F5 强制刷新即可。

这是升级还是降级?

A:我不好说。

本来的 EdgeOne CDN 费用是 100 CNY / 年 这样。现在 EdgeOne Pages 完全免费,但目前还没有任何增量服务。说实话我也想给钱,但没有渠道。

至于 Cloudflare Pages,我觉得还是可以相信它的。本来 EdgeOne CDN 在境外就是纯靠 Anycast 兜底,现在边缘部署不需要回源了,CF 表现应该还是可以的。而且我非常需要它的无限防护来让我稍微省点心。

至于 EdgeOne Pages,我确实不好说,毕竟从付费降级到免费了。现在不能手动配置各种缓存规则了,但至少它们还有 ETag,它们也不会傻傻地浪费自己流量。总的来说就是变得更加不可控了,但也更省心了,我不需要维护源站和缓存规则,也不需要花钱,访问效果目前也没看到很大的问题,姑且还是正向提升的。

EdgeOne Pages 似乎有 500KB 的限流,但说实话,我的站点 500KB 应该够用了。不过那个江苏的 IDC 盗刷每天吃我 1-3GB,所以改为 500KB 限流的话,境内用户如果正巧和江苏那个盗刷撞车,估计不是很舒服,但我也没招,我还是觉得边缘部署更省心,我以后不用盯着用量阈值发愁,这就是最大的提升。

关于博客外的站点

最近我又又又重整了我的整个网络架构。

当然,这些事情你肯定不关心,因为大部分都是我自己的服务,你甚至都不知道各服务的域名。所以我就简单做个技术汇报,以防我过段时间就把血的教训忘掉。如果顺带能给你提供一些经验与思路那就更好了。

历史悠悠

最开始我开始入坑自部署,是很多年前玩 MC 玩幻兽帕鲁啥的,需要服务器。于是到腾讯阿里之类的大 IDC 新用户百元租一年。配置就那样,带宽死低。但是开服跟朋友玩得老开心。那会也接触了 TeamSpeakArchi Steam Farm 之类的诸多自部署服务。但我因为不会用 Linux,开的是 Windows。各种配置当然都是点来点去的。也由于没有稳定持久使用的服务,到期后也就不续了(想续也续不了,那价格简直是抢劫)。

你滑到页面底部会看到本站 2020 年就存在了,那会儿是凡科网之类的一键建站(你不用去尝试,唯一的优点是它们 SEO 做得好,其它全是垃圾)。中间那段时间我博客其实是用一些装机自带 WordPress 的小服务器跑的,后来也因为服务器没钱续换成了 Hexo 纯静态站,Vercel 部署,以及后来的加 EdgeOne CDN 以及换源站到境内自己 VPS,也就是现在的本站。

在博客改为静态后的很长一段时间都非常和平,稳定得我都没理由去捣鼓新花样。

直到我听说了软路由这个东西,相当的有意思,可以全家设备走代理,还可以有各种高级配置。我狠狠的心动了,立刻下单 NanoPi R2S。然后狠狠地捣鼓了家里的网络(由于我捣鼓频繁,那几天家里常常断网,被我家里人抱怨了一通)。总之最后发现基本没用,软路由上开梯子,下游设备没有选择权,一个规则没设置好,就得跑到 Web UI 捣鼓半天,烦的很。我个人的习惯还是快捷键或手机下拉菜单快速开关。

有个趣事,不知道是地域还是别的原因,我当时打了个电话给电信:

我:你好,我想开下独立 IP。
客服:好,等 10 分钟重启路由器。
我:好的谢谢。
客服:不客气。

她甚至没问我理由?总之运气很好,没感觉和网上说的那么难。

于是又和平了一段时间…

然而我又找到了一个有意思的事情,NAS!这玩意可以当自己的网盘,那我可太需要了。我打游戏有录屏的习惯,当时已经 1TB 多了,再多我电脑就放不下了。于是我得搞个 NAS 放文件。然而群晖绿联啥的都太贵了,光是机子就上千,我还得花钱买硬盘。于是我选了最 geek 也最抽象的路线。直接买硬件组台电脑出来。一台 7*24 不断电的电脑,加上我的独立 IP,可不就是服务器嘛?

装完 “NAS”,当时的我理所当然地选择了 Windows Server 系统,因为我只会这个…

这一装可不得了,我发现这玩意根本就不是当 NAS 的料,它应该当 All in BOOM。

于是我开了一堆服务,各种游戏服务器、监控面板、JellyfinSyncthingArchi Steam Farm,甚至一时把博客源站也迁到这,连 Waline 评论系统也迁过来了(我以为评论服务和博客主站在同一台机子那不就 0 延迟吗?虽然后来我才知道我错了)。

无论多少服务,Windows 上点点就能启动,OpenWRT 开个端口映射,公网就能 DDNS 域名舒适访问。没错,那会我家宽 80/443 没封,毕竟新开的 IP。

好景不长,一个月后,家宽 web 端口封死了。我怎么都不愿意接受域名带端口访问。于是只能考虑再购置一台便宜 VPS 做反代。

那会我真的不懂 Linux,给 VPS 装 Windows 还是太抽象了,也是狠下心装了 Ubuntu,开机的第一件事情就是安装 1Panel

经过许久的调研后,我终于是找到可行的反代方案。我 NAS 和 VPS 建立 Wireguard 隧道。然后 NAS 上反代对应 IP 和端口即可。

这样的一个畸形架构运作了很久,为什么说畸形?因为明明有 VPS,服务全跑在 隧道另一头的 Windows 上,本来服务跑 Win 上就不行,何况还全都挤一个隧道。而且我那会还不知道所谓的家庭千兆上行其实只有 40Mbps 不到,以至于我以为我 VPS 的 300Mbps 上下对等才是瓶颈,一度尝试让用户无感知地访问 SyncthingJellyfin 的域名不带端口的同时,直连到我家宽(就是这个:站点隐性转发以及Meta同步)。

资源概述

简单来说,我有两个 IP 以及三个机子,你可以在**仪表盘**看到。

云上我有一台 VPS,我取名叫 Misty,它有固定 IPv4 和 IPv6。
家里有动态 IPv4,可能也有 IPv6,但反正我关掉了,我也不知道有没有。
家 LAN 的入口是一个 OpenWRT,我取名叫 Cube,它负责拨号、组网、转发、过滤等。
家 LAN 里还有台物理机,不是 NAS 但是当成 NAS 在用,我取名叫 Black

麻烦稍微记下这三个机子的名字,因为我为了取悦机魂,通常只叫它们名字(

后来怎么样了?

在我发现家宽上行 40Mbps 才是瓶颈的时候,我醒悟了。我手上明明有 Misty(固定公网 IP + 300Mbps 上下对等),却在 Black 上跑服务,还用这么繁琐的方式反代,就为了域名后面不用加端口?

我这套架构实际上非常脆弱,耦合性极强,Misty、Cube、Black 三者挂了任何一个,全系列就挂。时不时的家宽 IP 变动也仍然影响到全部服务。尤其是 Windows 上权限管理繁琐,服务配置管理繁琐等问题诸多。

我下定决心,是时候好好学习下 Linux 和 Docker 了。

现在我采用的架构基本理念是,全服务部署在 Misty,All in Docker,WAF + Nginx 作为唯一 Web 服务入口,只暴露必要的其它服务端口。Wireguard 改为连 Misty 和 Cube,Black 被解耦出来,只负责提供 SMB。Misty 因为 Wireguard 可以直接用家 LAN 网段,内网 IP 可以直接打到 Black。RClone 挂载盘,供部分服务如 Jellyfin 使用。

这么一来,攻击面收敛,三设备单向依赖且职责单一。Black 挂了不影响 Cube,Cube 挂了不影响 Misty。云上云下交互不依赖 DDNS 而是 Wireguard 自动隧道,家宽变动的影响被直接切割。所有服务都吃到了 300Mbps 带宽,同时全套的 Docker Compose 管理方便、迁移轻松。

那为什么本站不在这个架构内?

其实一开始本博客源站是在 Misty 上的。但我也发现了,我这些年的架构演进有个规律:从上游逐渐向下游走。

越靠近下游会导致控制权越低越分散,但性能总体是提升的,容灾会更高。

本站作为纯静态的博客,也是我众多服务中为数不多公开的,使用边缘部署可能是比单一源站 + CDN 更合理的选择。尤其是考虑到全球可访问性,geoDNS 分流也是不可或缺。更何况这种 Pages 部署方式和我博客更新流程高度契合,我博客是 GitHub Action CI 的,不管多少家 Pages 提供商,唯一真相源在公开的 GitHub 静态文件 repo,内容永远是统一且对齐的,且全面自动化。哪怕性能受损,我也一定会选这条路的。

最后

目前这套架构没看到更多的优化点,可能更多的是安全方面需要一些收敛。但考虑到我这种小人物估计不太可能被打,暂时就先这样吧。倒也不是对灰犀牛不管不顾,只是权衡了下 ROI 而已(

如果你有任何问题想咨询,随时通过首页侧栏的联系方式找我(手机端在首页标题部分)。我博客没评论通知,你永远不会知道我回复了你,直到你突发奇想再次点进我的博客。