You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否强制指定Cloudflare Worker运行区域以适配Microsoft Azure API?

解决Cloudflare Worker调用Azure API的区域限制问题

强制Cloudflare Worker从指定区域发起请求

Cloudflare Worker允许在fetch请求中通过cf选项指定请求发出的Cloudflare数据中心(colo),以此让请求源自Azure美国西部2区(westus2)附近的节点,满足微软的区域验证要求:

  1. 选择距离Azure westus2最近的Cloudflare数据中心,推荐SEA(西雅图)或PDX(波特兰),这两个节点的地理位置与westus2高度重合。
  2. 修改你的Worker代码,在调用Azure API的fetch方法中添加cf配置:
const AZURE_API_ENDPOINT = "https://westus2.api.cognitive.microsoft.com/your-specific-api-path";
const AZURE_SUBSCRIPTION_KEY = env.AZURE_KEY; // 确保已在Cloudflare配置环境变量

async function handleRequest(request) {
  const azureReqOpts = {
    method: "POST", // 适配你的API请求方法
    headers: {
      "Ocp-Apim-Subscription-Key": AZURE_SUBSCRIPTION_KEY,
      "Content-Type": "application/json"
    },
    body: await request.json(),
    cf: {
      colo: "SEA" // 指定从西雅图数据中心发起请求
    }
  };

  const azureResponse = await fetch(AZURE_API_ENDPOINT, azureReqOpts);
  return new Response(await azureResponse.json(), { headers: azureResponse.headers });
}

addEventListener("fetch", event => event.respondWith(handleRequest(event.request)));
  1. 重新部署Worker并测试,若SEA节点无效,可尝试PDX或SFO(旧金山)节点。

是否需要切换到Azure Function?

如果强制指定colo的方案能解决问题,完全没必要切换——Cloudflare Worker的边缘优势(低延迟、全球节点覆盖、免费额度)是Azure Function无法替代的。

只有当Cloudflare的指定节点仍被Azure拦截时,再考虑改用Azure Function:

  • Azure Function可直接部署在westus2区域,请求天然符合微软的区域要求。
  • 但切换后会失去Cloudflare的边缘缓存、路由优化等能力,且计费模式差异较大。

额外验证步骤

  • 确认Azure API端点正确:必须使用westus2专属区域端点,而非全局通用端点,比如认知服务的westus2端点格式为https://westus2.api.cognitive.microsoft.com/。
  • 检查Worker环境变量:确保订阅密钥已正确配置在Cloudflare的Worker环境变量中,避免本地测试与线上环境的密钥不一致。

内容的提问来源于stack exchange,提问作者learyjk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:55:29