上一篇 下一篇 分享链接 返回 返回顶部

为什么大家都在用 Cloudflare?从加速防护到 Workers 源码实战

发布人:慈云数据-客服中心 发布时间:5小时前 阅读量:3

Cloudflare 为什么越来越多人使用|附源码

在过去几年里,Cloudflare 的存在感越来越强。无论是个人开发者、独立站长、跨境电商团队,还是中大型企业,都开始把 Cloudflare 作为网站基础设施中的重要一环。很多人最初认识 Cloudflare,是因为它提供免费的 DNS 解析、CDN 加速和 DDoS 防护;但真正深入使用后会发现,Cloudflare 已经不只是一个“加速网站”的工具,而是逐渐发展成一个覆盖网络、安全、计算、存储、访问控制、边缘开发的综合平台。

本文将从实际使用角度,系统分析 Cloudflare 为什么越来越多人使用,并附上一些常见源码示例,包括 Cloudflare Workers 反向代理、接口缓存、简单 API 服务、图片代理等,帮助你快速理解它的价值。


一、Cloudflare 是什么?

Cloudflare 是一家提供网络基础设施和安全服务的公司。它最初以 CDN 和抗 DDoS 服务闻名,后来逐渐扩展出 DNS、WAF、Zero Trust、Workers、Pages、R2、D1、KV、Durable Objects 等一系列产品。

简单来说,Cloudflare 可以帮助你完成以下事情:

  • 让网站访问更快;
  • 保护网站免受攻击;
  • 提供稳定且快速的 DNS 解析;
  • 隐藏源站服务器 IP;
  • 在全球边缘节点运行代码;
  • 构建无服务器应用;
  • 管理团队访问权限;
  • 部署前端项目;
  • 存储静态资源、对象文件和数据库数据。

以前搭建一个网站,需要购买服务器、配置 Nginx、配置 SSL、设置防火墙、部署后端服务、处理缓存和安全问题。现在,Cloudflare 把很多底层基础设施能力抽象成了平台服务,让开发者能够更专注于业务本身。


二、为什么越来越多人使用 Cloudflare?

1. 免费套餐足够强大

Cloudflare 最大的吸引力之一,就是免费套餐非常实用。

对于个人网站、博客、小型项目而言,Cloudflare 免费版已经包含:

  • 免费 DNS 解析;
  • 免费 CDN;
  • 免费 HTTPS 证书;
  • 基础 DDoS 防护;
  • 页面规则;
  • Workers 免费额度;
  • Zero Trust 部分免费功能;
  • 基础 WAF 规则;
  • 全球边缘网络加速。

很多同类服务要么收费较高,要么免费版限制明显,而 Cloudflare 的免费额度对普通开发者非常友好。这也是为什么许多站长在部署网站时,会优先选择把域名接入 Cloudflare。


2. DNS 解析速度快且稳定

DNS 是互联网访问链路中的第一步。一个网站如果 DNS 不稳定,即使服务器再强,也会影响用户访问。

Cloudflare 的 DNS 服务以速度快、稳定性好著称。用户只需要把域名的 NS 服务器切换到 Cloudflare,就可以在 Cloudflare 控制台中统一管理 DNS 记录。

常见的 DNS 记录包括:

A       example.com        192.0.2.1
CNAME   www                example.com
MX      mail               mail.example.com
TXT     example.com        v=spf1 include:_spf.example.com ~all

在 Cloudflare 中,还可以开启“小云朵”代理模式。开启代理后,用户访问网站时,请求会先经过 Cloudflare,再转发到源站服务器。这样可以起到隐藏源站 IP、缓存静态资源、过滤恶意请求等作用。


3. CDN 加速覆盖全球

Cloudflare 在全球拥有大量边缘节点。当网站接入 Cloudflare 后,静态资源可以被缓存到离用户更近的节点上。

比如,一个中国香港服务器上的网站,用户从美国、欧洲、东南亚访问时,如果每次都回源到香港服务器,延迟会比较高。使用 Cloudflare 后,图片、CSS、JavaScript 等静态资源可以在边缘节点缓存,用户访问时直接从附近节点获取,响应速度明显提升。

CDN 的核心价值包括:

  • 降低源站压力;
  • 提升全球访问速度;
  • 节省服务器带宽;
  • 减少网络波动影响;
  • 提升大流量访问时的稳定性。

对于内容型网站、博客、软件下载站、文档站点来说,CDN 的价值非常明显。


4. 自动 HTTPS,非常方便

以前给网站配置 HTTPS 需要手动申请证书、部署证书、定期续期。对于新手来说,证书配置经常是一个麻烦点。

Cloudflare 接入域名后,可以自动提供 SSL/TLS 支持。用户可以在后台选择不同的加密模式:

  • Off:不启用 HTTPS;
  • Flexible:用户到 Cloudflare 使用 HTTPS,Cloudflare 到源站使用 HTTP;
  • Full:用户到 Cloudflare 使用 HTTPS,Cloudflare 到源站也使用 HTTPS;
  • Full Strict:严格验证源站证书。

一般建议使用 FullFull Strict。如果源站也配置了可信证书,推荐使用 Full Strict,安全性更高。


5. DDoS 防护能力强

DDoS 攻击是很多站长和企业都会遇到的问题。攻击者通过大量请求占满服务器带宽或计算资源,导致正常用户无法访问网站。

Cloudflare 以抗 DDoS 能力闻名。即使是免费版,也具备基础 DDoS 防护能力。对于大流量攻击,Cloudflare 可以在边缘网络层面进行清洗,而不是让攻击流量直接打到源站。

常见防护方式包括:

  • IP 信誉识别;
  • 挑战页面;
  • Bot 检测;
  • 速率限制;
  • WAF 规则;
  • JS Challenge;
  • Turnstile 验证码;
  • 自定义防火墙规则。

对于小团队来说,自建抗 DDoS 基础设施几乎不现实,而 Cloudflare 让这件事变得简单很多。


6. WAF 防护降低安全风险

WAF,即 Web Application Firewall,中文常称为 Web 应用防火墙。它可以帮助网站拦截常见攻击,例如:

  • SQL 注入;
  • XSS 跨站脚本;
  • 文件包含;
  • 路径遍历;
  • 恶意爬虫;
  • 异常 User-Agent;
  • 高频请求;
  • 已知漏洞扫描。

很多网站本身并没有完善的安全防护,尤其是使用 WordPress、Discuz、Typecho、ThinkPHP 等程序的网站。一旦程序或插件存在漏洞,就可能被扫描器批量攻击。

Cloudflare 的 WAF 可以在请求进入源站之前进行过滤,减少源站暴露风险。


三、Cloudflare Workers:让边缘节点运行代码

Cloudflare Workers 是很多开发者喜欢 Cloudflare 的重要原因。它允许你在 Cloudflare 的全球边缘节点上运行 JavaScript/TypeScript 代码。

你可以把 Workers 理解成一种边缘无服务器计算平台。它不需要你购买服务器,不需要配置环境,也不需要维护操作系统。你只需要写代码,然后部署到 Cloudflare,用户请求就会在离用户最近的节点被处理。

Workers 常见用途包括:

  • 反向代理;
  • API 聚合;
  • 接口缓存;
  • 请求鉴权;
  • 图片代理;
  • A/B 测试;
  • 短链接服务;
  • Webhook 转发;
  • 静态资源处理;
  • 简单后端服务。

四、源码示例一:Cloudflare Workers 返回 JSON API

下面是一个最简单的 Workers API 示例。

export default {
  async fetch(request, env, ctx) {
    const data = {
      code: 0,
      message: "Hello Cloudflare Workers",
      time: new Date().toISOString(),
      ip: request.headers.get("cf-connecting-ip"),
      country: request.cf?.country || "unknown"
    };

    return new Response(JSON.stringify(data, null, 2), {
      headers: {
        "Content-Type": "application/json; charset=utf-8"
      }
    });
  }
};

这个 Worker 会返回一段 JSON 数据,其中包含当前时间、用户 IP 和访问国家代码。

返回效果类似:

{
  "code": 0,
  "message": "Hello Cloudflare Workers",
  "time": "2026-06-05T10:00:00.000Z",
  "ip": "203.0.113.10",
  "country": "US"
}

这个例子虽然简单,但它展示了 Workers 的基本能力:你可以直接在边缘节点处理请求,而不需要源站服务器。


五、源码示例二:Workers 反向代理

很多人使用 Workers 来做反向代理。下面是一个基础版本,把访问 Worker 的请求转发到目标网站。

const TARGET = "https://example.com";

export default {
  async fetch(request) {
    const url = new URL(request.url);
    const targetUrl = new URL(TARGET);

    url.protocol = targetUrl.protocol;
    url.hostname = targetUrl.hostname;
    url.port = targetUrl.port;

    const newRequest = new Request(url.toString(), {
      method: request.method,
      headers: request.headers,
      body: request.method === "GET" || request.method === "HEAD" ? null : request.body,
      redirect: "manual"
    });

    const response = await fetch(newRequest);

    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: response.headers
    });
  }
};

这个代码会把 Worker 收到的请求转发到 https://example.com。如果你访问:

https://worker.your-domain.com/path?a=1

实际会转发到:

https://example.com/path?a=1

需要注意的是,反向代理应遵守目标站点规则和相关法律法规,不要用于绕过权限控制或访问限制。


六、源码示例三:带缓存的 API 代理

对于一些第三方 API,如果每次都直接请求源接口,不仅慢,还可能触发频率限制。我们可以用 Workers 做一层缓存。

const API_URL = "https://api.github.com/repos/cloudflare/workers-sdk";
const CACHE_TTL = 300;

export default {
  async fetch(request, env, ctx) {
    const cache = caches.default;
    const cacheKey = new Request(request.url, request);

    let response = await cache.match(cacheKey);

    if (response) {
      return addHeader(response, "HIT");
    }

    response = await fetch(API_URL, {
      headers: {
        "User-Agent": "Cloudflare-Worker-Demo"
      }
    });

    const data = await response.text();

    const cachedResponse = new Response(data, {
      status: response.status,
      headers: {
        "Content-Type": "application/json; charset=utf-8",
        "Cache-Control": `public, max-age=${CACHE_TTL}`,
        "X-Cache-Status": "MISS"
      }
    });

    ctx.waitUntil(cache.put(cacheKey, cachedResponse.clone()));

    return cachedResponse;
  }
};

function addHeader(response, status) {
  const newResponse = new Response(response.body, response);
  newResponse.headers.set("X-Cache-Status", status);
  return newResponse;
}

这个例子中,第一次访问会请求 GitHub API,并把结果缓存 300 秒。后续请求会直接从 Cloudflare 边缘缓存返回,减少源接口压力。

这种方式适合:

  • 天气接口;
  • 汇率接口;
  • 新闻接口;
  • GitHub 项目信息;
  • 商品价格接口;
  • 低频更新的数据接口。

七、源码示例四:图片代理与防盗链

有些网站希望对图片请求进行代理,避免直接暴露原始图片地址,同时可以增加简单的防盗链逻辑。

const ALLOWED_REFERERS = [
  "https://example.com",
  "https://www.example.com"
];

export default {
  async fetch(request) {
    const url = new URL(request.url);
    const imageUrl = url.searchParams.get("url");

    if (!imageUrl) {
      return new Response("Missing image url", { status: 400 });
    }

    const referer = request.headers.get("referer") || "";
    const allowed = ALLOWED_REFERERS.some(domain => referer.startsWith(domain));

    if (!allowed) {
      return new Response("Forbidden", { status: 403 });
    }

    if (!/^https?:\/\//i.test(imageUrl)) {
      return new Response("Invalid image url", { status: 400 });
    }

    const response = await fetch(imageUrl);

    const contentType = response.headers.get("Content-Type") || "";

    if (!contentType.startsWith("image/")) {
      return new Response("Not an image", { status: 400 });
    }

    return new Response(response.body, {
      headers: {
        "Content-Type": contentType,
        "Cache-Control": "public, max-age=86400"
      }
    });
  }
};

访问方式:

https://img.example.com/?url=https://example-cdn.com/photo.jpg

这个 Worker 做了几件事:

  1. 读取 URL 参数中的图片地址;
  2. 检查 Referer 是否来自允许的域名;
  3. 判断目标地址是否合法;
  4. 请求图片并返回;
  5. 设置缓存时间为一天。

实际生产环境中,还可以增加签名校验,避免图片代理被滥用。


八、源码示例五:简单短链接服务

Cloudflare Workers 配合 KV 可以做短链接服务。假设 KV 命名空间绑定名为 LINKS

wrangler.toml 示例

name = "short-link-worker"
main = "src/index.js"
compatibility_date = "2026-06-05"

kv_namespaces = [
  { binding = "LINKS", id = "your_kv_namespace_id" }
]

Worker 源码

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const path = url.pathname.replace("/", "");

    if (request.method === "POST" && url.pathname === "/create") {
      return createShortLink(request, env);
    }

    if (!path) {
      return new Response("Short Link Service", {
        headers: { "Content-Type": "text/plain; charset=utf-8" }
      });
    }

    const target = await env.LINKS.get(path);

    if (!target) {
      return new Response("Link not found", { status: 404 });
    }

    return Response.redirect(target, 302);
  }
};

async function createShortLink(request, env) {
  const body = await request.json();
  const target = body.url;

  if (!target || !/^https?:\/\//i.test(target)) {
    return new Response("Invalid URL", { status: 400 });
  }

  const code = Math.random().toString(36).slice(2, 8);

  await env.LINKS.put(code, target);

  return new Response(JSON.stringify({
    code,
    shortUrl: `/` + code,
    target
  }), {
    headers: {
      "Content-Type": "application/json; charset=utf-8"
    }
  });
}

创建短链接请求示例:

curl -X POST https://s.example.com/create \
  -H "Content-Type: application/json" \
  -d '{"url":"https://www.cloudflare.com"}'

返回结果:

{
  "code": "abc123",
  "shortUrl": "/abc123",
  "target": "https://www.cloudflare.com"
}

之后访问:

https://s.example.com/abc123

就会跳转到目标地址。


九、Cloudflare Pages:前端项目部署更简单

除了 Workers,Cloudflare Pages 也非常受欢迎。它适合部署静态网站和前端项目,例如:

  • Vue;
  • React;
  • Next.js;
  • Astro;
  • Vite;
  • Hugo;
  • Hexo;
  • Docusaurus;
  • Nuxt 静态站点。

Cloudflare Pages 可以直接连接 GitHub 或 GitLab 仓库。当你推送代码后,它会自动构建并部署。

例如一个 Vite 项目,构建命令通常是:

npm install
npm run build

输出目录:

dist

对于个人博客、文档站点、项目官网来说,Cloudflare Pages 的体验非常好:部署简单、访问速度快、自动 HTTPS、支持自定义域名,而且免费额度足够使用。


十、Cloudflare R2:无出口流量费的对象存储

Cloudflare R2 是类似 Amazon S3 的对象存储服务。它最大的卖点之一是没有传统意义上的出口流量费,这对图片站、下载站、备份系统非常有吸引力。

R2 适合存储:

  • 图片;
  • 视频;
  • 软件包;
  • 日志文件;
  • 备份文件;
  • 静态资源;
  • 用户上传文件。

如果你的网站有大量静态文件分发需求,使用 R2 配合 Cloudflare CDN,成本可能比传统云存储更可控。


十一、Zero Trust:适合团队远程访问

Cloudflare Zero Trust 是面向企业和团队的安全访问方案。它可以让团队成员安全访问内部系统,而不需要传统 VPN。

例如,公司内部有一个管理后台,不希望暴露给公网,但又希望员工在家办公时能够访问。传统做法可能是搭建 VPN,而 Cloudflare Access 可以通过身份认证、邮箱验证、单点登录等方式进行访问控制。

常见应用场景包括:

  • 内部管理后台;
  • Jenkins;
  • GitLab;
  • Grafana;
  • 数据库管理面板;
  • 公司文档系统;
  • 内部 API;
  • 远程桌面和 SSH 访问。

对于远程办公团队来说,这类功能可以大幅降低网络安全管理成本。


十二、使用 Cloudflare 需要注意什么?

虽然 Cloudflare 很强大,但也不是所有场景都适合无脑使用。

1. 不要把它当作万能加速器

Cloudflare 对全球访问优化明显,但不同地区、不同运营商的实际表现可能不同。尤其是某些地区网络环境复杂,实际访问速度需要测试。

2. SSL 模式要正确配置

不要长期使用 Flexible 模式。因为这种模式下 Cloudflare 到源站之间是 HTTP,仍然存在安全风险。推荐使用 Full Strict

3. 源站安全仍然重要

即使接入 Cloudflare,也不能忽略源站安全。你仍然应该:

  • 关闭不必要端口;
  • 设置服务器防火墙;
  • 限制源站只允许 Cloudflare IP 访问;
  • 定期更新系统和程序;
  • 使用强密码和密钥登录;
  • 做好数据备份。

4. Workers 滥用可能导致限制

Workers 虽然好用,但不要用于违规代理、大规模爬虫、绕过访问控制等行为。合理使用才能长期稳定。


十三、如何快速接入 Cloudflare?

基本流程如下:

  1. 注册 Cloudflare 账号;
  2. 添加你的域名;
  3. Cloudflare 扫描 DNS 记录;
  4. 确认 DNS 记录是否正确;
  5. 到域名注册商处修改 NS 服务器;
  6. 等待 DNS 生效;
  7. 开启 SSL/TLS;
  8. 配置缓存规则和安全规则;
  9. 根据需要启用 Workers、Pages、R2 等服务。

如果只是一个普通网站,接入过程通常十几分钟就可以完成。


十四、总结

Cloudflare 越来越多人使用,并不是偶然。它解决了很多网站和应用在真实运行中都会遇到的问题:访问速度、安全防护、证书管理、DNS 稳定性、DDoS 攻击、全球分发、无服务器计算、对象存储和团队访问控制。

对于个人开发者来说,Cloudflare 的免费套餐和 Workers 能力非常有吸引力,可以低成本构建很多实用工具;对于企业来说,Cloudflare 提供了完善的安全和网络基础设施,可以降低运维复杂度,提高系统稳定性。

如果你只是搭建一个博客,Cloudflare 可以帮你做 DNS、HTTPS、CDN 和安全防护;如果你是开发者,Workers、Pages、KV、R2、D1 可以让你快速构建边缘应用;如果你是团队管理者,Zero Trust 可以帮助你更安全地管理内部系统访问。

一句话总结:Cloudflare 受欢迎的原因,不只是因为它免费,而是因为它把复杂的网络基础设施变得简单、可靠且可扩展。对于现代 Web 项目来说,它已经从一个“可选工具”逐渐变成了很多人的“默认配置”。

目录结构
全文