温馨提醒
这篇文章发布于 118 天前,内容可能已过时,请谨慎参考。
type
status
date
slug
summary
tags
category
icon
password
在 Cloudflare Workers 上轻松部署反向代
Cloudflare Workers 是一个运行在 Cloudflare 边缘网络上的无服务器平台,非常适合用来搭建轻量级的反向代理服务。本文将详细介绍如何在 Cloudflare Workers 上快速部署反向代理代码,帮助你实现流量转发、请求改写等功能。
一、准备工作
- 你需要一个 Cloudflare 账户,并添加至少一个域名。熟悉基础的 Cloudflare 控制台操作。目标被代理的域名(如 example.com)。
二、步骤详解
1. 登录 Cloudflare 控制台
1. 访问 [Cloudflare Dashboard](https://dash.cloudflare.com) 并登录。
2. 选择你管理的任意域名,或者直接使用 Workers 独立运行。
2. 创建 Worker
1. 在左侧导航栏选择 **Workers & Pages > Overview**。
2. 点击 **Create Application**,然后选择 **Create Worker**。
3. 你将进入 Worker 代码编辑页面。
3. 编写反向代理代码
在编辑器中粘贴以下代码:
这段代码会拦截所有请求,将请求的目标域名改为你指定的目标域,并将请求转发。
4. 通过路由添加优选域名(推荐方式)
创建完 Workers 后,你可以 不用添加自定义域名,而是添加路由,例如:
然后去 DNS 管理页添加一个 CNAME 记录:
- 前缀:使用你刚才添加的路由前缀(这里是
example)
- 目标:指向优选域名(即你想代理的目标域名)
这样,实际上是给项目变相地添加了优选域名,简化了自定义域名配置的流程。
5. 配置自定义域名(可选)
如果你想通过自己绑定的域名访问代理:
- 在 Worker 页面点击 Triggers > Custom Domains。
- 添加你的自定义域名,例如
proxy.yourdomain.com。
- 按照提示配置对应的 DNS 记录(一般为 CNAME 指向 Cloudflare Workers 地址)。
- 完成绑定后即可通过自定义域名访问代理服务。
6. 测试与部署
- 点击 Save and Deploy 按钮,将代码发布。
- 通过 Worker 默认提供的域名访问,例如:<TEXT>
https://your-worker.your-subdomain.workers.dev
- 页面应返回目标网站(example.com)的内容,表示代理生效。
三、高级配置示例
1. 针对特定路径代理并添加路径前缀
假设只想代理
/api 路径,可以改写请求路径:2. 保留并修改请求头(如 Host)
部分后台服务依赖请求中的 Host 头,需要强制指定:
3. 使用环境变量避免硬编码
在 Worker 的 Settings > Variables 中配置:
四、验证代理是否工作
- 打开代理地址,如:<TEXT>
https://your-worker.your-subdomain.workers.dev
- 你应能看到目标网站(example.com)的内容。
- 也可以用
curl命令测试:<BASH>curl -v https://your-worker.your-subdomain.workers.dev
五、注意事项
1. 目标域名限制
- 如果目标域名也托管在 Cloudflare,确保关闭代理(设置 DNS 记录为灰色云),以避免循环代理。
- 有些目标站点可能启用防火墙或 CORS 策略,导致代理请求失败,此时需要调整目标服务器配置。
2. 性能优化
- Cloudflare Workers 有资源限制(CPU 时间、内存)。
- 高流量场景建议合理拆分功能和请求路径,避免超时和资源不足。
3. 安全性
- 避免暴露敏感后端接口。
- 可以利用 Worker 的路由过滤功能控制访问来源。
- 需要鉴权、缓存等复杂需求时,请参考 Cloudflare Workers 文档 实现。
总结
借助 Cloudflare Workers,部署一个轻量级反向代理变得异常简单且高效。只需几行代码和几步配置,就能让你的请求通过 Cloudflare 边缘网络转发到指定后端。无论是跨域请求、请求重写还是简单负载均衡,Workers 都是一个极佳的选择。
彩蛋
如果你想反代的是一个HTTP的页面,可以参考如下代码
方案1:强制使用 HTTP 协议
方案2:更完整的处理方式
- 作者:古明地こいし
- 链接:https://blog.nlvps.dedyn.io/article/example-5
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
.png?table=collection&id=22b87748-0c8b-8118-a695-000b109babec&t=22b87748-0c8b-8118-a695-000b109babec)