惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
小众软件
小众软件
博客园_首页
T
Tailwind CSS Blog
美团技术团队
博客园 - 叶小钗
Microsoft Security Blog
Microsoft Security Blog
有赞技术团队
有赞技术团队
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Microsoft Azure Blog
Microsoft Azure Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
J
Java Code Geeks
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
IT之家
IT之家
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Y
Y Combinator Blog

又耳笔记

用AI挣钱之AI建站:二维码生成器工具 用AI挣钱之AI建站:https://markdowntopdf.top Cloudflare Workers实战番外一:用Static Assets托管网站,告别传统方案 Cloudflare Workers实战(五):不止JavaScript,拥抱Python与Rust Cloudflare Workers实战(四):托管和分发静态文件 Cloudflare Workers实战(三):实现认证、重定向与缓存 Cloudflare Workers实战(二):动态修改后端响应 Cloudflare Workers实战(一):随心所欲操作客户端请求 使用n8n创作短篇小说 水果风波:信任的代价 用Python将PDF文件转换成图片 rust网络框架Pingora源码阅读3 rust网络框架Pingora源码阅读2 rust网络框架Pingora源码阅读1 Pingora快速入门教程1之总览 Rust模板引擎askama快速入门引擎 使用Loco快速搭建自己的后台系统 用Rust发一封图文并茂的邮件 Rust小项目: 写一个简单的恶意流量阻断器 Rust小项目: 写一个简单的网页爬虫 Rust命令行库Clap快速入门教程 Rust小项目:用Rust写一个端口扫描器 Rust真全栈开发快速入门 rust声明宏快速入门教程 Rust文本处理快速入门教程 RUST web框架axum快速入门教程6之测试 白嫖免费的Rust在线运行时shuttle RUST web框架axum快速入门教程5之中间件 用Rust来做以太坊开发5之事件日志及签名 《英语语法分解大全》读后感
Cloudflare workers不完全指南
About 又耳宁 关于技术与股票的一些零碎想法 · 2025-07-13 · via 又耳笔记

众所周知的是互联网山有一个超级知名的大善人,此人被世人尊称为赛博佛祖,你只需要自己拥有一个域名就能在上面解锁很多强大的功能,包括但不限于防火墙,workers,域名解析,邮件服务等。

本文主要尝试讲解一下cloudflare的workers服务,你可以将它看作一个可编程的代理服务器,类似nginx的lua脚本,不同的是它要强大的多,因为它不只是代理,还可以集成cloudflare的其他服务,比如数据库等,它介于客户端和后端之间,所以可以操作客户端请求,后端响应,因此可以实现非常多的有趣的功能,具体的案例可以参考官方文档: https://developers.cloudflare.com/workers/examples/,官方示例代码分类如下

examples.png

本文是一个系列文章,系列文章内容安排如下:

  1. 增删改查客户端请求
  2. 增删改查后端响应
  3. 认证/重定向/缓存
  4. 静态文件
  5. 其他编程语言支持(如Python和Rust)

快速入门的例子

下面的代码会将客户端所有的信息以json的格式返回给客户端

// 获取客户端请求信息
// https://ifconfig.youerning.top/

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

async function handleRequest(request) {
  // 获取客户端IP(优先使用CF专用头)
  const ip = request.headers.get('CF-Connecting-IP') || 
             request.headers.get('X-Forwarded-For') || 
             'IP not available';

  // 获取请求头信息
  const headers = {};
  for (const [key, value] of request.headers) {
    headers[key] = value;
  }

  // 获取Cloudflare提供的扩展信息[1,5](@ref)
  const cfInfo = request.cf ? { ...request.cf } : {};
  
  // 可选:添加地理位置信息[3,5](@ref)
  if (!cfInfo.country) {
    cfInfo.country = request.headers.get('CF-IPCountry');
    cfInfo.city = request.headers.get('CF-IPCity');
  }

  // 构建响应对象
  const responseData = {
    ip: ip,
    headers: headers,
    cf: cfInfo,
    timestamp: new Date().toISOString(),
    method: request.method,
    url: request.url
  };

  // 返回JSON响应
  return new Response(JSON.stringify(responseData, null, 2), {
    headers: {
      'Content-Type': 'application/json',
      'Access-Control-Allow-Origin': '*' // 允许跨域访问
    }
  });
}

效果如下: ifconfig-example

Playground

如果你想不创建workers就测试workers代码,可以登陆cloudflare的 workers playground来测试代码,地址:https://workers.cloudflare.com/playground

总结

cloudflare的workers可以做的事情超级多,唯一受限的是自己的想象力,如果跟cloudflare的数据等其他服务绑定的话完全可以整个后端代码放在上面,如果业务比较轻的话,如果业务比较重,肯定还是得自己搞后端服务器,并且配置各种服务,而cloudflare的好处是免费额度足够大。

唯一的缺点可能是,cloudflare在中国的延迟问题,但这个问题见仁见智吧,可以忍受的自然可以忍受。