转载自我的个人博客:双 CDN 加速 + 智能调度 |未名小站

DeepSeek 的官网是一个很典型的双 CDN 加速的场景,当我们使用 IT-Dog 对其发起多地 Ping 的时候,可以看到国内使用的是华为云的服务,国外则使用的是 Cloudflare 的服务:itdog.cn/ping/deepseek.com

在实际的建站过程中,很多的恶意网络攻击都来自于海外,如果都使用国内的 CDN 来抗的话,流量和请求费用会变得十分高昂,而 Cloudflare 则提供了免费的 CDN 服务,而通过 Cloudflare SaaS 功能,我们可以在不切换 nameserver 的情况下将我们的服务接入到 Cloudflare 中,从而为海外用户也提供高质量的服务

Cloudlfare SaaS 接入原理

Cloudflare for SaaS 的核心是使用 CNAME 方式来接入客户域名,其主要流程如下:你先将一个域名接入到 Cloudflare 中,为这个域名开启 Custom Hostnames 服务,之后使用 CNAME 的方式,将业务域名接入到 Cloudflare 中

一旦配置好后,Cloudflare 将接管来自业务域名的流量,并将其导向 Cloudflare 的边缘节点,为其提供服务

整体流程概括

用户访问  →  DNS 查询(找出 IP) →  连接 Cloudflare 边缘节点  →  转发流量给源站
|
app.client.com

[client 的 DNS 提供商]

CNAME → client.yoursaas.com

[Cloudflare 的 DNS 记录]

返回 Cloudflare 边缘节点 IP(Anycast)

用户连接 Cloudflare,Cloudflare 处理流量

用户在浏览器中输入业务域名 app.client.com,之后 DNS 提供商返回 CNAME 结果为接入到 Cloudflare 的域名 client.yoursaas.com,之后返回 Cloudflare 的 DNS 记录,之后用户连接到 Cloudflare 的边缘节点,Cloudflare 处理流量

Cloudflare 在这个过程中成为了 app.client.com 的边缘代理,处理了它的流量

如何处理其中的 SSL 和域名所有权验证

Cloudflare 提供了一种叫做「Cloudflare Custom Hostnames + ACM(Advanced Certificate Manager)」的解决方案,你需要添加两条 TXT 记录,用来验证所有权和申请 SSL 证书,申请到的 SSL 证书不会下发给用户,而是直接部署到 Cloudflare 的边缘节点,之后业务上线之后了用户直接访问即可生效

SaaS 接入之后如何设置 WAF 或者缓存

SaaS 接入之后,直接使用业务域名即可,比如说我这里接入的域名为:pic.juniortree.com,我直接在 Cache Rules 里面添加就可以了,和常规的域名是一样的

在对应的 WAF 事件里面也可以看到来自 pic.juniortree.com 的记录

如何接入

具体可以参考这篇文章:实现网站国内外分流(境外接入 Cloudflare) | 半方池水半方田

在 Cloudflare 的域名中,你需要添加「回退源」,也就是最终 Cloudflare CDN 的回源

在 SSL/TLS 中,选择「自定义主机名」,添加回退源为刚刚解析到源服务器的 IP 的域名

之后添加「自定义主机名」为你想接入的域名,之后在想接入域名的 DNS 管理商添加两条 TXT 记录,我这里接入到是阿里云

有效之后,我们需要将业务域名 CNAME 到 Cloudflare 的回退源,我这里将境外解析到 Cloudflare 的回退源,境内解析到腾讯云的 CDN,这样的话就完成了「双 CDN 加速 + 智能调度」

最终实现了全绿,一片好形势啊

并且也可以看到,境内外解析出来的 IP 不同,也实现了分流

存在的问题

因为我的原站在国内,Cloudflare 的边缘节点回源拉取速度很慢,导致国外的用户在初次访问本站的时候没有缓存,速度很慢,这个我还在想办法解决,比如说将图床的服务器迁移到香港去,这样的话腾讯云的 CDN 也有边缘节点,Cloudflare 也有,这样的话就可以兼顾境内外的用户访问了

双 CDN 加速 + 智能调度的更多相关文章

  1. CDN的智能调度,链路优化的详细解答

    您的用户在请求资源的过程中,可能受到网络.地域.带宽等影响,无法保证请求一定是按照最优访问路径进行传递,猫云 CDN 通过对全网链路进行实时监控,结合自研的 GSLB 调度体系和智能路由技术,从以下几 ...

  2. CDN及CDN加速原理

    本想自己写这个主题的文章,但网上已经有人写了一篇非常好的文章,觉得难以望其项背.就没有必要再写,直接转载如下: 在不同地域的用户访问网站的响应速度存在差异,为了提高用户访问的响应速度.优化现有Inte ...

  3. CDN百科第三讲 | 如果用了云服务器,还需要做CDN加速吗?

    在全站上云的背景下,云计算已经不仅仅是大型互联网公司的独享概念,正在被更多的传统企业.中小企业甚至个人站长所采用.在众多云计算服务中,最常见两个产品就是云服务器和CDN,今天的CDN百科第三讲,就给大 ...

  4. 3.CDN加速简介

    什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问 ...

  5. DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

    “智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可 ...

  6. “DNAT+云链接+CDN”加速方案,助力出海企业落地生长

    摘要:“DNAT+云链接+CDN”加速方案,真正释放技术红利,真诚助力企业出海. 随着国内互联网行业的人口红利逐渐消失,本土互联网市场竞争不断加剧,加之国家多项“走出去”政策的推动,越来越多的中国互联 ...

  7. CDN和智能DNS原理和应用 (原)

    CDN是什么? CDN的全称是Content Delivery Network,即内容分发网络. CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调 ...

  8. CDN是什么与CDN加速的原理

    CDN是什么 CDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络 CDN设计思路 避让:尽可能避开互联网上有可能影响数 ...

  9. 什么是网站CDN服务,CDN加速原理?

    转载:http://server.zzidc.com/fwqcjwt/728.html 摘要:在为您的网站打开速度发愁吗?您有没有发现有些大网站每天拥有几十万或者上百万,甚至几亿用户的访问,而且不同用 ...

  10. 老司机的自信,让 CDN 加速再加速

    CDN 的存在,加快了用户的访问速度,使用户可以在不提升网速下,获得更好的访问体验.购物时,可以更快的显示商品图片:看电影时,可以随意的拖拽浏览.如果把数据资源比作是一件件包裹,那么用户的带宽就像是一 ...

随机推荐

  1. [tldr]GO使用正则表达式

    简述如何使用GO调用正则表达式 是否符合条件 使用MatchString方法实现 _, err := regexp.MatchString(regex, str) 提取内容 Compile 第一步需要 ...

  2. JMeter 线程编号 __threadNum 获取不到

    场景: 在 BeanShell PreProcessor 中,使用 vars.get("__threadNum") 获取不到当前线程数,如: import org.apache.j ...

  3. linux curl 测试 websocket 服务

    如下 curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: ec ...

  4. Java基于XXLJOB的定时任务实现阶梯式通知方式

    数据库表设计 CREATE TABLE `tx_order_push_info` ( `order_no` varchar(64) DEFAULT NULL COMMENT '交易单号', `orde ...

  5. 史上最全EffectiveJava总结(一)

    创建和销毁对象 1.静态工厂方法代替构造器 优点 静态工厂方法有名称,能确切地描述正被返回的对象. 不必每次调用都创建一个新的对象. 可以返回原返回类型的任何子类对象. 创建参数化类型实例时更加简洁, ...

  6. “决策-寻找过程”的黄金秘密工具,1/e 法则之应用(尤其日常生活中的应用)

    https://www.ccgxk.com/magicword/327.html 目录 引言 著名的 1/e 法则内容和解释 应用到生活中的 1/e 法则是什么样? 相亲案例 看书.看电影案例 生活质 ...

  7. 在Unity中实现(纯C#)热更新--使用ILRunTime{学习日志}

    热更新的逻辑:热更新的那部分内容其实就是一个dll的库文件,到时候修改也是改这个库文件: 我们只需要在主工程(我们的Unity项目)中引入并调用这个dll库里的代码就行了. 首先我们需要在Unity中 ...

  8. Go语言实现1024终端游戏-不到400行代码

    先放源码地址,喜欢看源码翻源码,喜欢看文章的继续继续看文章 https://github.com/taadis/go1024 - go1024 使用 go 语言实现的 1024 终端游戏,不到400行 ...

  9. CSS文本超出省略

    语法: text-overflow:clip|ellipsis|"任意字符" <!DOCTYPE html> <html> <head> < ...

  10. Flutter 2025 年产品路线图发布

    每一年 Google Flutter 团队都会发布一份产品路线图,包括 Flutter 框架和 Dart 编程语言,让开发者能够了解官方团队的优先事项,并据此做出自己的计划安排. 产品路线图也会随着客 ...