Cloudflare浑身都是宝,普通用户可白嫖哪些服务?

Cloudflare浑身都是宝,普通用户可白嫖哪些服务?

DNS是一种域名 [网站](https://developers.cloudflare.com/products) 转化为IP的服务,Cloudflare作为全球最大的DNS服务商,提供免费的DNS解析服务

只需要将域名托管到Cloudflare开启小黄云后浏览器的流量会先经过Cloudflare,再到达源服务器,开启之后会提供CDN、SSL证书、DDos防御等服务CDN服务:通过遍布全球的数据中心,缓存客户网站的静态资源,比如JS文件、CSS图像、视频等,当请求数据时,可以从地理位置最近的CDN节点获取,加快加载速度,缓解服务器压力SSL证书:免费提供SSL证书,自动设置好HTTPS加密,自动将HTTP访问转为HTTPS,增加通讯安全性隐藏真实IP:打开小黄云隐藏网站的真实IP地址,攻击者最多追溯到CDN节点,可有效防止网站真实IP泄露,保护原站安全DDos防御:隐藏真实IP后,DDos攻击最多也只能攻击到CDN节点,Cloudflare曾经阻止了历来规模最大的 DDoS 攻击 这里吃瓜 50,如果客户用了其他的防御,估计都要破产了Pages部署:Cloudflare Pages是一个免费且易用静态网站托管服务,可以在Github上创建一个仓库,把网站内容丢进去,在Cloudflare里链接仓库,网站即可上线,更新网站只需要往仓库提交代码即可,Cloudflare会自动为网站分配域名,自动完成部署构建,这应该算是最快上线网站办法了吧Workers部署:是Cloudflare提供的一个无服务器计算服务,编写代码可以是多种类代码,比如JAVAscript、python、Typescript,用户部署之后就会上传到全世界的CDN节点,当请求数据时,可以从地理位置最近的CDN节点会响应请求,执行代码的业务逻辑,减少延迟,提高性能,这种架构被称为边缘计算。worker可以干各种事情,比如返回一段数据、做重定向、、做过滤、做代理、做内网穿透、做缓存等等。worker可以代理世间万物!!!。每天提供10万次的最大请求次数,用不完根本用不完Workers AI:Cloudflare为Wokers添加了AI模型的能力,可以在wokrer里调用许多开源大模型,让woker也获得部分AI能力R2 对象存储:提供了对象存储服务,提供每月10GB的免费存储空间,1千万次的免费请求次数,勾选启用你的R2数据库就可以被全世界读取Tunnels:如果你想在外网访问家里的设备,又很难申请到公网IP,就可以使用Cloudflare Tunnels实现的免费内网穿透服务,这种方案配置简单,无数量限制、无流量限制Turnstile:Cloudflare五秒盾,人机小验证,只需要一段简单免费的代码片段,即可为网站添加一个强大的反爬虫人机验证功能,不需要进行挫败感慢慢的人机拼图验证(我觉得拼图真废!)Images:可编程的图像处理和优化平台,只需要编写简单的URL规则,就可以对图像进行缩放、裁剪、格式转化、水印等处理,并且自动优化图像以加快加载速度Cloudflare电子邮件:将域名托管到Cloudflare后,进入域名,点击电子邮件路由,这里可以创建最多200个临时邮箱,也可以开启catch-all功能,将所有发送到此域名的邮件都转发到指定邮箱,这样你就拥有了无限个可以收件的邮箱

功能

Cloudflare Workers:释放边缘计算的力量

你对 Cloudflare Workers 作为一种强大的无服务器平台,将计算推向网络边缘的描述非常准确。正如你所理解的那样:通过将使用 JavaScript、TypeScript 和 Python 等语言编写的代码部署到 Cloudflare 的全球 CDN,开发者可以在更接近终端用户的地方执行业务逻辑。这种边缘计算模型显著降低了延迟,并提升了各种应用的性能。

正如你所指出的,Cloudflare Workers 的功能非常丰富。下面我们将更深入地探讨你提到的各项功能,展示 Workers 如何真正地“代理一切”!

架构:边缘的 V8 Isolates

Cloudflare Workers 的核心技术是 V8 Isolates——这正是为 Google Chrome 提供 JavaScript 执行引擎的技术。与可能使用容器或虚拟机的传统无服务器平台不同,Workers 采用了轻量级的 isolates。这种架构让冷启动几乎瞬时完成,并能在单台物理机器上运行成千上万的函数,使平台在效率和可扩展性方面表现卓越。当请求到达时,它会被路由到 Cloudflare 在全球数百个数据中心中最近的一个,Worker 脚本即在此处执行,以将往返时间降到最低。

多样的语言支持

虽然最初专注于 JavaScript,但 Cloudflare 已扩展了语言支持,面向更广泛的开发者社区。你现在可以用以下语言编写 Workers:

  • JavaScript 和 TypeScript:最成熟、使用最广泛的选项。

  • Python:支持日益完善,适用于各种任务。

  • Wasm (WebAssembly):可以将 Rust、C++、Go 等语言编译为在 Workers 环境中运行的二进制格式,为性能关键型应用打开了新天地。

核心能力与使用场景

Cloudflare Workers 能拦截并修改任何 HTTP 请求和响应,让开发者在边缘拥有细粒度的控制。以下是你提到的几种常见用途:

1. 返回一段数据

这是最基础的用例之一。Worker 可以直接在边缘返回 HTML、JSON、纯文本等任意格式的数据,非常适合创建简单 API、提供配置文件,甚至渲染完整网页。

示例:返回 JSON 响应

  
addEventListener('fetch', event => {
  
  const data = {
  
    message: 'Hello from the edge!',
  
    timestamp: new Date().toISOString()
  
  };
  

  
  const json = JSON.stringify(data, null, 2);
  

  
  event.respondWith(
  
    new Response(json, {
  
      headers: {
  
        'content-type': 'application/json;charset=UTF-8',
  
      },
  
    })
  
  );
  
});
  

2. 执行重定向

Worker 可以基于地理位置、设备类型或 A/B 测试组等多种条件动态重定向用户,比在 Web 服务器上配置静态重定向规则更灵活。

示例:基于地理位置的重定向

  
addEventListener('fetch', event => {
  
  const { cf } = event.request;
  
  const country = cf.country;
  

  
  let url = 'https://example.com/global';
  

  
  if (country === 'US') {
  
    url = 'https://example.com/us';
  
  } else if (country === 'GB') {
  
    url = 'https://example.com/gb';
  
  }
  

  
  event.respondWith(Response.redirect(url));
  
});
  

3. 过滤请求

Worker 可以充当“守门人”,检查传入请求,在到达源服务器之前决定是允许、阻止还是修改它们。这对于安全、机器人管理和访问控制都十分重要。

示例:阻止来自特定国家的请求

  
addEventListener('fetch', event => {
  
  const { cf } = event.request;
  
  const country = cf.country;
  

  
  if (country === 'XX') { // 将 XX 替换为要阻止的国家代码
  
    event.respondWith(new Response('访问被拒绝', { status: 403 }));
  
  } else {
  
    event.respondWith(fetch(event.request));
  
  }
  
});
  

4. 充当代理

Worker 的真正强大之处在于它可以作为反向代理,根据请求路径、头信息或自定义逻辑将请求转发到不同的源。这使得在同一域名下无缝整合多种后端服务和 API 成为可能。

示例:根据路径将请求代理到不同服务

  
addEventListener('fetch', event => {
  
  const url = new URL(event.request.url);
  

  
  if (url.pathname.startsWith('/api/')) {
  
    // 转发到 API 服务
  
    event.respondWith(fetch('https://api.example.com' + url.pathname, event.request));
  
  } else if (url.pathname.startsWith('/images/')) {
  
    // 转发到图片存储服务
  
    event.respondWith(fetch('https://images.example.com' + url.pathname, event.request));
  
  } else {
  
    // 转发到主站点
  
    event.respondWith(fetch('https://www.example.com' + url.pathname, event.request));
  
  }
  
});
  

5. 安全地实现内网穿透

虽然 Worker 本身并不直接“穿透”内网,但它是安全公开内部服务的关键组件——这主要通过与 Cloudflare Tunnel 集成来实现。

做法如下:在私有网络中的服务器上运行 cloudflared 守护进程,该进程与 Cloudflare 网络建立一个仅出站的安全隧道。然后,Worker 可以配置为将公共请求通过此隧道代理到内部服务,而无需在防火墙上打开任何端口。结合 Workers VPC,这种方案可扩展到 Cloudflare 网络与你云端基础设施之间的私有网络通信。

6. 缓存处理

Cloudflare Workers 提供了对缓存行为的精细控制。你可以编程式地决定哪些内容被缓存、缓存多长时间以及在何种条件下覆盖默认规则,从而实现复杂的缓存策略,大幅提升性能并降低源站负载。

示例:为响应设置特定缓存时长

  
addEventListener('fetch', event => {
  
  event.respondWith(handleRequest(event.request));
  
});
  

  
async function handleRequest(request) {
  
  const cache = caches.default;
  
  let response = await cache.match(request);
  

  
  if (!response) {
  
    // 缓存中不存在,则从源站获取
  
    response = await fetch(request);
  

  
    // 创建带缓存头的新 Response
  
    response = new Response(response.body, response);
  
    response.headers.set('Cache-Control', 'public, max-age=3600'); // 缓存 1 小时
  

  
    // 存入缓存
  
    event.waitUntil(cache.put(request, response.clone()));
  
  }
  

  
  return response;
  
}
  

总而言之,你的评估非常精辟。Cloudflare Workers 为网络边缘的多种任务提供了灵活且强大的平台。从简单的数据响应到复杂的代理逻辑,再到私有资源的安全连接,其可能性确实十分广阔。正是这种在边缘拦截并以编程方式处理任意请求和响应的能力,让 Workers 真正能够“代理”并重塑互联网流量的流向。