精品软件与实用教程
Cloudflare使用Workers和Pages部署网站反向代理
使用 Cloudflare Workers 和 Pages 进行Proxy网站反向代理是一个非常实用的方法,可以帮助你加速访问、绕过限制或隐藏源站地址。以下是一个简洁的教程,教你如何利用这两者实现反向代理功能。整个过程无需自己托管服务器,利用 Cloudflare 的边缘计算能力即可完成。
Cloudflare 不仅仅是一个 CDN 服务商,而是一个高性能、低延迟、安全可靠的全球网络平台。
借助其遍布全球的边缘计算架构,Cloudflare 能够高效加速静态与动态内容的分发,同时提供精准的缓存策略以优化带宽使用。此外,其内置的无限 DDoS 保护机制可有效抵御各类网络攻击,确保业务的稳定性与安全性。
今天,我们将利用 Cloudflare Workers 与 Cloudflare Pages 搭建高效的反向代理服务,以充分发挥 Cloudflare 在分布式计算与边缘网络加速方面的优势。
配置网站反向代理前的准备
Cloudflare账户
如果还没有账户,请访问Cloudflare进行注册!
Cloudflare账户注册过程相对简单,可以使用谷歌账号、苹果账号或自定义的Email进行注册。
推荐使用Google进行注册,Google账户几乎覆盖所有国外的热门网站,都可以使用Google账户进行登录,如果你还没有谷歌账户的话,赶紧去注册一个吧!
激活域名
需要将域名转移到Cloudflare上面,如果你还不会在Cloudflare中激活域名的话,下面教你如何激活域名。
需要更新您的名称服务器来激活 Cloudflare。
在Cloudflare后台添加新域名,将域名输入,默认选择快速扫描DNS记录,点击继续!
选择免费计划,域名添加成功!
接下来登录到你的域名注册的网站上,进入后台后,找到并关闭 DNS 安全 (DNSSEC) 设置,如果默认是关闭的请无视,您以后可以通过 Cloudflare 重新启用。
将您当前的名称服务器替换为 Cloudflare 分配的名称服务器。
注意:每个域名都会分配不同的名称服务器,删除掉多余名称服务器,在名称服务器1和名称服务器2中填写Cloudflare 名称服务器。
下面以namesilo为例:
在后台点击域名,进入域名操作页面,编辑名称服务器。将名称服务器里的内容删除掉。
修改名称服务器后,保存即可。个别地区生效时间较晚,暂时不需要理会生效时间。
在Cloudflare后台,如果域名状态是活动状态,就表示已经生效了,如果名称服务器没有生效或者修改错误,会显示名称服务器无效。
GitHub账户
如果还没有账户,请访问GitHub进行注册!
在GitHub上创建账户,只能使用电子邮件注册,建议使用Gmail进行注册。
在邮箱中接收验证码,填写完毕后,账户注册成功!
使用Workers和Pages部署网站反向代理Proxy
接下来我们使用Workers和Pages部署网站反向代理,有两种方式来部署网站的反向代理,下面来实践一下部署过程。
注意事项
- Workers 方式: 复制 _worker.js ,在 Cloudflare 保存并部署。
- Pages 方式: Fork 仓库,在 Cloudflare 连接 GitHub 一键部署。
- Workers vs Pages:Workers 更适合纯动态代理,Pages 适合混合静态内容和动态功能。如果只是简单反向代理,Workers 更直接。
- 免费配额:Cloudflare 免费套餐提供每天 10 万次 Workers 请求,Pages 也有类似的限制,足够个人使用,但大规模流量可能需要付费计划。
- 国内访问:workers.dev 和 pages.dev 在中国大陆可能被限制,建议绑定自定义域名。
- 安全性:确保目标网站允许代理访问,避免违反服务条款。
使用 Cloudflare Workers 实现反向代理
Cloudflare Workers 是运行在 Cloudflare 全球边缘节点上的无服务器脚本,可以轻松处理 HTTP 请求并将其转发到目标网站。
第一步:注册并登录 Cloudflare
如果你还没有 Cloudflare 账号,先去官网注册一个,然后登录。
第二步:创建一个 Worker
在 Cloudflare 仪表盘中,点击左侧计算(Workers)下面的 "Workers 和 Pages",然后选择 "快速开始"。
给你的 Worker 起个名字(默认会生成一个类似 yourname.workers.dev 的域名)。
名字填写完毕后,点击部署,接下来进入部署页面中
点击编辑代码,进入到 Worker 编辑器中,删除默认代码,粘贴以下简单反向代理脚本。
第三步:创建反向代理脚本
创建一个自定义的java脚本,下面是反向代理脚本示例:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { const url = new URL(request.url); // 将请求转发到的目标网站 const targetHost = 'example.com'; // 替换为你要代理的域名 url.hostname = targetHost; // 创建新的请求 const newRequest = new Request(url, request); return await fetch(newRequest); }
这个脚本会把所有发送到你 Worker 的请求转发到 example.com。
第四步:保存部署
点击 右上角的蓝色按钮"部署",你的 Worker 就上线了。你可以通过 https://your-worker-name.yourname.workers.dev 访问它。
第五步:配置域名
由于workers.dev的域名在国内无法访问,你需要配置新的域名。
在配置选项下面的域和路由菜单中,点击添加。
选择自定义域,然后输入域名后保存。这时候域名就添加成功了,可以使用新域名访问了。
到这里,使用Cloudflare Workers实现反向代理的功能就已经实现了,是不是很简单。接下来还可以使用Pages部署网站反向代理。
使用 Cloudflare Pages部署网站反向代理
Cloudflare Pages 是一个静态网站托管平台,结合 Git 仓库自动化部署,适合快速上线前端项目。它最近新增了 Functions 功能(本质上是 Workers 的变种),允许在边缘执行动态代码。
Cloudflare Pages 主要用于托管静态网站,但结合 Functions(基于 Workers 的功能),也可以实现反向代理。
下面开始使用 Cloudflare Pages 部署反向代理。
第一步:创建 Pages 项目
在 Cloudflare 仪表盘的 "Workers 和 Pages" 中,点击创建,然后选择 "Pages",点击 "连接到Git"。
连接你的 GitHub 或 GitLab 仓库(可以创建一个简单的空的静态项目,例如只有一个 index.html)。
第二步:连接到存储库
这里以GitHub为例,首先需要在GitHub上创建一个项目。
在 Github 上建立仓库并添加代码,登录 Github 后,如下图所示,点击创建存储库,建立一个名为 Cloudflare Pages 的私库。
注意,这里创建新的存储库要选择私人的,否则是任何人都可以访问的。
接下来创建新文件,点击 creating a new file 创建新文件,创建文件。
下面创建一个名为_worker.js 的文件,然后复制以下代码,在第五行单引号里改成你想要反代的网站,然后保存,提交更改。
反向代理的js代码,注意域名中不要加https,http等字符。
export default { async fetch(request, env) { let url = new URL(request.url); if (url.pathname.startsWith('/')) { url.hostname = '反代地址' let new_request = new Request(url, request); return fetch(new_request); } return env.ASSETS.fetch(request); }, };
返回到Cloudflare Pages页面后, 选择 GitHub 后点击 "连接 GitHub" 按钮。
页面跳转至 Github ,点击 Install & Authorize 按钮。
输入密码进行连接,连接成功后,返回到Cloudflare Pages
选择存储库后,点击开始设置。
设置构建和部署页面可以修改项目名称,或者默认即可,最后点击保存并部署。
很多人在开始部署的时候显示失败。
这是因为Cloudflare Pages 的构建系统版本升级成了v2,在项目的设置选项中,将构建系统版本修改成v1,然后重新部署就可以成功了!
部署成功后,你可以在自定义域中绑定独立的域名。
到这里Cloudflare Pages反向代理就设置完了,是不是很简单!
Workers 和 Pages 部署反向代理的区别和优缺点对比
选择 Workers 的场景:
需要强大的反向代理功能,例如:
- 修改所有类型的响应内容(HTML、XML、JSON 等)。
- 处理复杂的替换规则或动态路由。
- 精确控制响应头或缓存策略。
对性能要求高,希望在服务端完成所有逻辑。
项目涉及边缘计算或需要全球低延迟响应。
选择 Pages 的场景:
反向代理需求简单,例如仅代理 HTML 并做少量替换。
- 项目主要是静态网站,只需简单的反向代理或重定向。
- 不希望额外成本,只依赖免费额度。
- 开发团队熟悉前端开发,倾向于静态文件部署。
应用多条内容替换规则(包括标题、URL、图片等)。以下是对比后的建议:
- Workers:
优势:可以完美实现你的脚本,直接在服务端完成所有替换,支持正则表达式和多种内容类型,性能和用户体验更好。
推荐理由:你的需求涉及复杂的替换规则(多条正则匹配)和 URL 重写,Workers 更适合。 - Pages:
限制:只能通过客户端 JS 实现替换,性能较差,且无法处理非 HTML 内容或响应头。
适用性:如果预算有限且只代理 HTML,可以勉强使用,但体验不如 Workers。
推荐方案:使用 Cloudflare Workers。它能完整实现你的反向代理和内容替换需求,且性能和灵活性更优。