









UptimeFlare 是一个基于 Cloudflare Workers 的 Serverless 网站状态监控服务,完全免费且易于部署。具体简介和部署流程见 完全免费的网站状态监控服务 - UptimeFlare
本文为其添加代理服务用于解决 UptimeFlare Worker 与 Cloudflare Pages/Workers 同账号部署时的回环限制问题,通过将监控请求转发至 Vercel 服务器发出,绕开 Cloudflare 的回环拦截。

问题描述
静态服务(托管在 Cloudflare 上)触发了 Cloudflare 的 Loopback 保护。 Cloudflare Worker 去请求同一个 Cloudflare 账号下的域名,会被识别为内部回环请求,直接返回 503,然后后续可能触发临时封锁导致超时。
bash
pnpm i vercel@latest -g执行后会自动跳转浏览器完成登录,登录成功后终端会提示确认。
进入 UptimeFlare/proxy 目录,执行部署命令:
bash
cd UptimeFlare/proxy
vercel按照交互提示操作:
| 提示 | 输入 |
|---|---|
| Set up and deploy? | 回车确认 |
| Which team? | 选择你的个人账号 |
| Link to existing project? | N |
| Name? | 输入名称 uptimeflare-proxy 或者回车使用默认名 proxy |
| In which directory is your code located? | 回车(./) |
| Customize settings? | N |
| Change additional project settings? | N |

部署完成后终端会输出访问地址,例如:
https://xxx-proxy.vercel.app在 uptime.config.ts 的监控项中加入 checkProxy(仅当目标服务在 Cloudflare 且你的 UptimeFlare 与之同账号部署时):
ts
{
id: 'example',
name: '示例服务',
method: 'HEAD',
target: 'https://example.com/',
expectedCodes: [200],
timeout: 10000,
checkProxy: 'https://xxx-proxy.vercel.app', // 填入你的 Vercel 地址
},提交代码后 UptimeFlare Worker 自动重新部署,下一个检测周期即生效。
如需更新 proxy 代码,在 proxy 目录下执行:
Vercel 代理环境使用 HEAD 方法请求某些站点时,会被拦截(返回 503)或导致连接挂起(Timeout)。由于 Cloudflare WAF 限制或服务端框架(如 Next.js)的处理差异,默认的 HEAD 方法可能会失败。请根据报错类型尝试以下两种方法:
GET,expectedCodes 保持 [200]。OPTIONS,并将 expectedCodes 改为 [200, 405]。OPTIONS 作为预检请求常被 WAF 放行,返回 405 即可证明服务存活。ts
{
id: 'example',
name: '示例服务',
method: 'GET', // 或 'OPTIONS'
target: 'https://example.com/',
expectedCodes: [200], // 若为 OPTIONS 请配置 [200, 405]
timeout: 10000,
checkProxy: 'https://xxx-proxy.vercel.app', // 填入你的 Vercel 地址
}此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。