基于 Cloudflare 加速(中转)节点访问
前提:
- 你需要具备外币卡/Paypal (只开通服务,不收费)
- 两个主域名
CDN 技术
在配置之前,在简单说一下cdn技术
内容交付网络(CDN) 是一组分布在不同地理位置的服务器,它将Web 内容存放在更靠近用户的位置,从而加速Web 内容的交付
简而言之
- cdn 就是一个服务商搭建的一套网状覆盖区域的 节点池
- 每个节点都会缓存静态资源
- 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 | 127.0.0.1 -> 需要加速的节点 |
这个过程需要两个主域名参与配置
配置网站(让CF托管一个域名,用于回源)
打开:https://dash.cloudflare.com/sign-up
1、 注册一个 Cloudflare 账号,有账号的话你就登录啊
2、 添加主域名,用于回源的
这个域名不重要,用户不会直接访问,如果没有的话,可以找个免费域名平台申请一个
3、 选择免费计划,点击继续
4、 添加一个dns记录,用于回源
Cloudflare会自动检测你现在有的DNS记录,自动添加。
如果已经有一条用于回源的记录,A记录或者CNAME都行,则无需再建 (指向服务节点)
5、 修改该主域名的dns解析,让CF管理
具体如何修改,不同的运营商方式不同,以阿里云为例
6、 DNS托管完成后,回到CF平台,开启SaaS服务,需要绑定外币卡/Paypal,不会扣费
7、 配置 SSL/TLS -> 自定义主机名 -> 回退源
- 回退源就是上面配置的 origin.test.com
添加后点击刷新,正常情况下 回退源状态 应为:有效
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 进行许可。