基于 Cloudflare 加速(中转)节点访问

基于 Cloudflare 加速(中转)节点访问

Attson Lv3

前提:

  1. 你需要具备外币卡/Paypal (只开通服务,不收费)
  2. 两个主域名

CDN 技术

在配置之前,在简单说一下cdn技术

内容交付网络(CDN) 是一组分布在不同地理位置的服务器,它将Web 内容存放在更靠近用户的位置,从而加速Web 内容的交付

简而言之

  1. cdn 就是一个服务商搭建的一套网状覆盖区域的 节点池
  2. 每个节点都会缓存静态资源
  3. cdn访问就近的节点,如果该节点无所需资源,会按照cdn服务商自己的链路往上游节点访问,直至访问到 源站

结论,当你的所有资源都是非静态资源(或者缓存策略都是不缓存),那就会按照 cdn 服务商优化链路,访问到源站,即 DCDN

当然有一些服务商提供的CDN只支持静态资源,就无法作为流量节点加速使用

简易流程

1
客户端 -> [cloudflare ip/域名 -> 回源策略] -> server.ip

先讲原理

1
127.0.0.1 -> 104.27.112.31 (cf 公共cnd节点 ip) -> server.ip

为什么通过 cf ip 能够直接访问到 server.ip?

难道是 cf 里面可以直接配置 ip -> server.ip 的反向代理?类似 nginx ?

显然不是那么简单,如果是单纯使用nginx ip 代理方案,那不就是所有人访问这个公共ip 都会指向自己的server.ip 了。

所以上面的链路体现的不完善,再完善上面的链路:

1
127.0.0.1 -> my.server.com + 104.27.112.31 (cf 公共cnd节点 ip) -> server.ip

在真实的链路中,需要指定自己的域名,然后cf根据 “域名->server.ip 的映射关系”,完成代理链路

理论成立开始实操

Cloudflare 配置

在 Cloudflare 中的 DCDN 产品,是 网站服务里面 -> SSL/TLS -> 自定义主机名 提供的

所以在上述的理论链路在cf平台配置后实际链路是这样的

1
127.0.0.1 -> my.server.com + 104.27.112.31 (cf 公共cnd节点 ip) -> ssl/tls 回源策略 -> 回源域名 -> 回源域名dns解析 -> server.ip
  • 回源域名必须是在 cf 管理的域名 (回源域名其实在使用时对用户时无感的,只用于回源域名解析)
  • my.server.com 必须是非 cf 管理的域名 (用户真实使用的域名)

所以本质是:

1
2
3
127.0.0.1 -> 需要加速的节点 
变成
127.0.0.1 -> cf -> 需要加速的节点

这个过程需要两个主域名参与配置

配置网站(让CF托管一个域名,用于回源)

打开:https://dash.cloudflare.com/sign-up

1、 注册一个 Cloudflare 账号,有账号的话你就登录啊

2、 添加主域名,用于回源的

这个域名不重要,用户不会直接访问,如果没有的话,可以找个免费域名平台申请一个

3、 选择免费计划,点击继续

4、 添加一个dns记录,用于回源

Cloudflare会自动检测你现在有的DNS记录,自动添加。

如果已经有一条用于回源的记录,A记录或者CNAME都行,则无需再建 (指向服务节点)

origin.test.com

5、 修改该主域名的dns解析,让CF管理

具体如何修改,不同的运营商方式不同,以阿里云为例

6、 DNS托管完成后,回到CF平台,开启SaaS服务,需要绑定外币卡/Paypal,不会扣费

7、 配置 SSL/TLS -> 自定义主机名 -> 回退源

添加后点击刷新,正常情况下 回退源状态 应为:有效

8、 添加自定义主机名。该域名就是真实加速域名,必须是非CF管理域名

9、 配置主机名和SSL验证,CF需要验证你有该域名的管理权限和下发SSL证书

回到你的需要加速域名的域名管理平台,添加dns txt记录,用于验证主机。以阿里云为例

主机名验证完成后,添加dns txt记录,用于颁发SSL。以阿里云为例

都验证完成后状态

10、 最后确保 blog.mysite.com 解析到CF上,A记录或者CNAME

  • A记录解析到CF ip上 (优选ip)
  • CNAME解析到CF 域名上 (优选域名)

此时,访问 blog.mysite.com 就会通过CF节点,并回源到 origin.test.com

注意事项

默认情况下,选择回源的模式是 灵活,意味着 CF -> origin.test.com 走的都是80端口,无SSL

比如 curl http://blog.mysite.com or curl https://blog.mysite.com

都是相当于 curl http://origin.test.com


但是实测当 curl https://blog.mysite.com:8443 时,cf 会强制后端链路需要SSL, 相当于 curl http://origin.test.com:8443

其他支持的端口没有测试

如何调整回源端口和SSL策略

1、 SSL 策略

方式一、在上图中调整为 完全模式,则会按照请求端口并使用SSL建立回源链接。(这个配置会对该域下所有的自定义主机名生效)

方式二、通过规则配置,针对不同规则应用配置,比如指定 blog.mysite.com 的回源是使用 完全模式

2、 回源端口自定义

比如想要实现 curl http://blog.mysite.com -> curl https://origin.test.com:8443

其他说明

  • 因为节点基本在海外,所以套CF中转,速度不会很理想
  • 但是使用移动网络的话,可能会使用 Cloudflare 香港节点,理论上会有不错的速度
  • 作为代理的话,可以用于防止 ip 被墙或者已经被墙
  • 作为免费cdn,会有一定的价值,毕竟不会被墙
  • 这套方案理论上可以做其他更多的事情
  • 如果过程中出现5xx 4xx
    • 请检查是否一个主域名在CF管理,一个在其他平台
    • 请检查回源端口和回源ssl策略

参考链接

  • 标题: 基于 Cloudflare 加速(中转)节点访问
  • 作者: Attson
  • 创建于 : 2024-08-15 02:00:46
  • 更新于 : 2024-08-14 18:51:33
  • 链接: https://attson.github.io/p/cloudflare_cdn_proxy.html
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
 评论