应用场景

最开始使用博客园记录一些学习的东西的,后来有很长一段时间是直接记在了 Joplin 或者是 Obsidian 里面,2024 年年初重新捣腾了博客,这次想自己建个独立的博客。最终确定的方案是 cloudflare page 部署 hugo 博客,这样做的好处是全球可以享受 cloudflar 的 cdn 服务实现全球加速,同时不用担心 DDos 攻击啥的。但是由于一些网络问题,导致国内cf cdn 很多时候是减速器。

人嘛,只要当上了小小站长,就会尝试各种方式优化自己的站点,俺也不例外,搜了很多网上的方案想尝试加速国内的访问速度,本篇文章做一个加速方案的汇总和总结。

首先感谢一些热心的老哥,非常耐心负责地回答了我很多疑问

感谢技术爬爬虾出的 SAAS 教程

【视频教程】双域名白嫖Cloudflare优选IP,最优CDN给自己网站加速,尽情享受CF免费服务 - 开发调优 - LINUX DO

或者观看其视频教程

一些能使用上的网址

网站测速

cf 优选 ip

方案

使用 DNS 分流国内外不同ip 的请求,国内的走腾讯云 cdn 加速通道,国外直接走 cloudflare 的 cdn。

概念

CDN

在网络架构中,“源站”和“回退域名”有特定的含义,尤其是在使用CDN(内容分发网络)时。

  1. 源站: 源站是指存放你网站内容的原始服务器。所有的数据、网页文件、图片等内容都在源站服务器上存储,CDN 通过从源站获取内容并将其缓存到全球各地的节点服务器,以减少用户的访问延迟。例如, Hugo 博客部署在 Cloudflare Pages 上,那么 Cloudflare Pages 就是源站。

  2. 回退域名: 回退域名(Fallback Domain)用于在主源站不可访问时,作为备用地址来保证服务的连续性。当源站发生故障或无法处理请求时,流量将被自动引导到回退域名指定的服务器。例如,如果我们设置了 global.nadirecho.top 作为回退域名,当 blog.nadirecho.top 无法访问时,Cloudflare 会将用户流量重定向到 global.nadirecho.top 来提供备份服务。这样可以避免由于主源站故障导致的网站完全无法访问。

  3. CDN(内容分发网络): 一种分布式的网络架构,旨在通过在全球多个节点之间缓存和分发内容,提高网站或应用的访问速度、稳定性和可用性。CDN 通过将内容缓存到多个CDN节点。 举个例子,当一个亚洲用户向美国服务器发送请求时,距离较近亚洲CDN节点会响应请求,分发静态内容(如图片、CSS、JavaScript 文件等),从而加快用户的访问速度。这样当请求过多时,也可以减少源服务器的压力。

DNS解析的几个概念

DNS(Domain Name System)解析是将域名转换为IP地址的过程,常见的DNS解析方式包括以下几种:

A记录解析

  • 作用:将域名解析为IPv4地址。

  • 应用场景:用于为域名分配一个具体的IPv4地址,例如访问某个网站时,DNS服务器通过A记录将域名解析为服务器的IPv4地址。

AAAA记录解析

  • 作用:将域名解析为IPv6地址。

  • 应用场景:当网站或服务支持IPv6时,AAAA记录将域名映射到IPv6地址,支持更广泛的互联网接入。

CNAME记录解析

  • 作用:将一个域名解析为另一个域名的别名。

  • 应用场景:当一个网站有多个子域名或者变更了主机名时,CNAME记录可以将多个域名指向同一个目标。例如将 www.example.com 指向 example.com

MX记录解析

  • 作用:指定邮件服务器的域名,用于电子邮件的传递。

  • 应用场景:用于邮件服务,指示将发送到该域名的电子邮件转发到指定的邮件服务器。例如,公司域名的邮件通过MX记录解析到其邮件服务器。

NS记录解析

  • 作用:指定域名的权威DNS服务器。

  • 应用场景:用于指明哪个DNS服务器负责解析该域名,是DNS解析的基础。NS记录常用于顶级域名和二级域名。

TXT记录解析

  • 作用:存储与域名相关的文本信息,可以包含任意的文本数据。

  • 应用场景:通常用于域名验证、安全机制(如SPF、DKIM等)和其他说明性信息。

  1. SRV记录解析

  2. PTR记录解析

  3. SOA记录解析

CloudFlare 的 SAAS 服务(自定义主机回退源服务)

前提

  1. 通过 cloudflare page 部署了一个网站(或是类似 vercel、github page、netifly 服务)或者是服务器上部署好了网站

  2. 两个域名,一个源域名,一个辅助域名。



正常域名为 origin.com

辅助域名为 real.com

首先,我们需要在 cloudflare 上面对 origin. com 设置 DNS,并把 cloudflare 的小黄云打开,这样的话,将 origin. com 通过 cloudfalre 的 cdn 节点在到达服务器。

Responsive Image

image-20240917193048620

这样做的好处是免费使用了 floudflare 的 cdn 服务,加速中国大陆境外访问速度。隐藏真实 ip 和防范 ddos 攻击

但是我现在想要最终用户输入 real. com 访问我的网站,换句话说最终输入 origin. com 显示给用户,呈现在浏览器网址栏的也是 real. com,这个时候就需要用到CloudFlare 的 SAAS 服务

其实这个服务的操作就是可以在 cloudflare 的 cdn 节点上增加一条配置。

意思是当 host 请求中存在 origin. com, 则将请求路由到回退源地址也就是 real. com 这个地址

Responsive Image

image-20240918020446412

配置 cdn 节点,使得不同网络服务商可以走最佳的 cdn 节点,加速网络的访问,这里需要引入一个子域名

这个子域名的目的在于借助于对它的解析达成对联通电信和国外线路的 DNS 解析分流

配置方法把这个子域名 cname 到已经配置好线路分流的域名即可

Responsive Image

image-20240918020716783

github 对应的社区有很多大佬已经配置好分流的公共优选 cname 域名地址,我们选择其中一个进行配置即可

这样做的一个结果或者是好处在于,访问该子域名的流量都会根据规则自动流经最优 cdn 节点

最后再添加一个 cname 规则,将子域名同访问域名关联起来

Responsive Image

image-20240917193907480

国内外双 cdn 加速方法

cloudflare

cloudflare page部署hugo静态博客,本身page会提供一个域名『page.dev』

同时绑定一个自定义域名『x.com』在cloudflare page上,同时『x.com』这个域名放在阿里云上托管(因为阿里云支持智能分流).

Responsive Image

image-20240921220954633

腾讯云

然后我购买了腾讯云的cdn服务:

  • 加速域名为『x.com』

  • 回源域名和回源HOST都填写page的原始域名『page.dev』

  • 设置完成后腾讯云cdn提供了一个cname『x.cdn.com』

Responsive Image

image-20240921220700926

Responsive Image

image-20240921220739282

阿里云

在阿里云上,设置『x.com』在面对不同地区访问时走不同的路线

  • 境内的走腾讯云的cdn分配的cname『x.cdn.com』

  • 境外的直接cname到『page.dev』

因为阿里云没有境内的选项,所以我是一个一个设置的

Responsive Image

image-20240921220912223

整体的方案其实很简单就是下图所示

Responsive Image

方案一

效果

按照上面的方案我搭了一个『nadirecho.top』的网站

然后搭了一个全部部署在cloudflare page上的『test.61action.fun』的网站

很遗憾的用测速网站的top域名的显示效果很好,fun域名的不太行,但是实际效果如果挂梯子的话,fun域名加载速度完爆top域名的,top域名可以感觉到明显的迟缓

测速对比

『nadirecho.top』

Responsive Image

image-20240921221825464

Responsive Image

image-20240921221842000

『test.61action.fun』

Responsive Image

image-20240921221954856

Responsive Image

image-20240921222005544

实际效果

录屏对比.mp4

在挂代理的情况下,明显fun域名的速度快上不少

原因

我问了腾讯云的客服,他们给出的理由就是cloudflare的服务器在日本,境内访问过去速度就是不太快,如果要加快速度的话考虑全站加速。

cloudflare 优选ip + cdn加速国内访问

思路

我在想现在的问题是在于说腾讯云访问境外服务器所以才缓慢。如果我是用 saas + 优选 ip 的方式,境内再套一层腾讯云的 cdn 这样会不会快,腾讯云 cdn 第一次访问就走优选 ip 对应比较快的线路,这样子和直接优选 ip 相比的话有区别吗,会快一些吗(存档存疑 )

刚刚试了一下优选 ip 的方案,『cdn.y.com』套了个优选 IP 的 cname,回退源『y.com』, 子定义主机源『nadirecho. top』, 『y.com』在 cloudflare 托管,『nadirecho. top』在阿里云托管,『nadirecho.top』境外指向『cdn.y. com』, 境内走腾讯云 cdn,腾讯云 cdn 回源地址为『cdn.y.com』, 回源 HOST 为『nadirecho.top』

优选 ip itdog 测试显示有效,感觉好像是 saas+优选 ip 的方式本身好像没有奏效,朋友们,help! 哪出了问题呢

看后面,已解决问题

使用不同代理后会出现找不到代理 ip 的显示

Responsive Image

image-20240921232925028

原因是在于 page 的页面需要绑定你主力域名,我之前把它撤销掉了,所以出现了 code 522 错误就是因为这个问题,绑定以后就成功了。只要在 cloudflare 的 page 页面绑定访问的主力域名就可以正常访问了。

整体方案图

Responsive Image

方案二

实际效果

初次访问效果不佳,在 cdn 边缘服务器的缓存下,后续访问速度挺快的。

对比资源加载速度是有所提升的
对比方案均未挂代理:Responsive Image

对比1.png

Responsive Image

对比2.png

其它问题-腾讯云 cdn 验证失败

在腾讯云cdn验证的过程中出现了验证失败的情况

Responsive Image

image-20240918195504001

问题是在于最开始我的DNS服务器是设置在cloudflare,现在换到了阿里云默认的DNS域名服务器,这个在阿里云后台看是已经恢复过来,但是在公共平台查询,可能还是原来的域名指向,需要等待各地云服务厂商的刷新。可以在 https://whois.aliyun.com/domain/ 输入自己的网址查询,是否已经全球都刷新同步成功了。如图还是cloudflare的DNS服务器。

解决方法:等两天~