MENU

基于 DNS 利用 Cloudflare CDN 实现个人站点的国内外访问分线路的实践

• February 25, 2025 • Read: 63 • 默认分类

好久没发文了,今儿分享一下我在个人站点建设过程中,如何基于 DNS 策略,利用 Cloudflare CDN 对国内外访问进行分线路加速的实践经验。本文主要介绍整个实施流程、关键技术点以及优化配置,供有类似需求的朋友参考。

背景与初衷

在网站优化过程中,加速访问和防范 DDoS 攻击一直是重中之重。通常,我们会在站点前端部署 CDN,不仅可以提升加载速度,还能隐藏真实 IP。但在国内环境下,CDN 成本较高,且流量被盗刷风险不容忽视(尤其我的服务器本身已具备 500G 共享防御,有一定的抗D能力)。

针对这一现状,若能针对不同区域采用不同策略,即对国内外流量进行分线路处理,就能有效降低成本并优化用户体验。

正好,我的域名托管在阿里云上,利用其 DNS 解析的线路设置功能,便可以实现这一目标。


分线路思路

最初,我设想的流量路径如下:

  • 国内用户:原站 → CDN 加速 → 用户
  • 国外用户:原站 → 用户

如上所示,国外用户绕过 CDN 访问,访问速度相对较慢。为此,我决定也为国外用户接入 CDN,但因 Cloudflare 的免费服务只针对根域名生效(无法直接加速子域名),我采用了以下小技巧:


Cloudflare 配置实践

为解决 Cloudflare 免费 CDN 的限制,可以按照下面的步骤进行配置:

  1. 准备额外域名
    注册并托管另一个域名到 Cloudflare 平台。
  2. 创建解析记录
    在 Cloudflare 上创建一条 A/AAAA 记录(例如命名为 blog),指向原站服务器,并启用 CDN 加速。
    2025-02-25T08:38:03.png
  3. 设置加密模式
    在 SSL/TLS - 概述中选择“完全”加密模式(前提是原站已经启用 HTTPS)。
  4. 添加自定义主机名(最重要)
    在 SSL/TLS - 自定义主机名中添加希望通过 Cloudflare 加速的子域名,通过 DNS 验证(将海外 DNS 请求 CNAME 指向 blog,并设置回退源为blog)。
    2025-02-25T08:39:36.png
  5. 等待验证
    完成域名所有权验证及证书颁发,如长时间未通过可尝试删除后重新添加。

下表概述了以上步骤:

步骤操作内容说明
1准备额外域名,并托管至 Cloudflare为接入 Cloudflare 免费 CDN 做前提准备
2创建 A/AAAA 记录(如命名为 blog),指向原站服务器开启 Cloudflare CDN 加速
3在 SSL/TLS - 概述中选择“完全”加密模式前提:原站已启用 HTTPS
4添加自定义主机名并完成 DNS 验证将海外 DNS 请求 CNAME 指向 blog,并设置回退源
5等待域名验证与证书颁发如验证失败可尝试删除后重新配置

经过这些设置,当海外用户通过自定义子域名访问时,流量将被引入 Cloudflare CDN,实现了静态资源加速和有效的 DDoS 防护。


CDN 优化配置

在 Cloudflare 基础接入后,我又根据实际情况进行了如下优化设置:

  • 速度优化:在“速度 - 优化”中启用了所有可用选项。
    2025-02-25T08:41:16.png
  • 缓存策略:依据站点需求,在“缓存选项”中调整相关参数。
  • URL 转发规则:在“规则 - 概述”中创建 URL 转发规则,将直接访问 CDN 域名的请求转发到主站,确保请求逻辑一致。
    url
  • 图片 URL 参数处理:由于使用了又拍云 CDN 的图片处理功能,图片 URL 附带额外参数,可能导致国外访问异常,因此增加转发规则去除冗余参数。
  • 解决 CORS 问题:测试中发现,国外访问字体文件时存在 CORS 跨域问题,于是定义了响应头转换规则,添加了适当的 CORS 响应头。
    cors
  • 页面规则设置:在“规则 - 页面规则”中进一步细化缓存及访问规则。
  • 边缘证书配置:在“SSL/TLS - 边缘证书”中开启“始终启用 HTTPS”和“自动 HTTPS 重写”,确保全站传输安全。

CDN 配置示意图


流程图解

整个优化流程大致分为以下几个阶段:

  1. 需求分析
    确认站点访问现状与安全防护需求。
  2. DNS 分流策略制定
    利用阿里云 DNS 的线路设置,将国内外流量分离处理。
  3. Cloudflare 接入实施
    通过额外域名和自定义主机名,将海外流量引入 Cloudflare CDN。
  4. 细节优化与规则配置
    包括速度优化、缓存策略、URL 转发、CORS 处理及边缘证书配置。

最终的网络拓扑

graph TD
    A[用户请求] --> B{区域判断}
    B -->|国内| C[又拍云CDN]
    B -->|海外| D[Cloudflare]
    C --> E[源站服务器]
    D --> E
    E --> F[静态资源]
    E --> G[动态内容]

总结

通过基于 DNS 的流量分离和 Cloudflare CDN 的灵活接入,成功实现了国内外访问的分线路优化,有效提升了站点加载速度和抗 DDoS 能力。希望我的这篇分享能为正在探索站点加速方案的你提供一些新的思路和参考。

如果你有任何问题或更好的建议,欢迎在评论区留言讨论!


Happy coding~ ᓚᘏᗢ

Archives QR Code Tip
QR Code for this page
Tipping QR Code