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

CloudFlare对接Google Cloud Bucket出现NoSuchBucket错误求助

问题原因及解决办法

核心原因

Google Cloud Storage(GCS)的寻址逻辑导致了这个错误:当你通过自定义域名cdn.myurl.com访问时,GCS会把整个自定义域名当作桶名去查找,也就是它会尝试访问名为cdn.myurl.com的存储桶,而不是你实际的note_dummy桶,自然会返回NoSuchBucket错误。你直接访问note_dummy.storage.googleapis.com时,域名里已经明确指定了桶名,所以能正常访问。

解决方法

方法一:给GCS存储桶绑定自定义域名(推荐)

  1. 登录Google Cloud控制台,找到note_dummy存储桶,进入设置 -> 自定义域名选项卡。
  2. 添加cdn.myurl.com作为该桶的自定义域名,按照提示完成域名所有权验证(因为你已经在CloudFlare配置了CNAME记录,验证会自动通过)。
  3. 等待配置生效(通常5-30分钟),之后访问https://cdn.myurl.com/cdn.json即可正常获取资源。

方法二:通过CloudFlare修改请求Host头(无需改动GCS配置)

如果不想在GCS上绑定自定义域名,可以用CloudFlare的页面规则或Worker强制修改请求的Host头,让GCS识别到正确的桶名:

  • 页面规则方式:新增一条页面规则,匹配https://cdn.myurl.com/*,添加“修改请求头”动作,将Host头设置为note_dummy.storage.googleapis.com,优先级设为高于现有缓存规则。
  • Worker方式:创建一个CloudFlare Worker,代码如下,然后绑定到cdn.myurl.com/*的路由上:
addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const newHeaders = new Headers(request.headers)
  newHeaders.set('Host', 'note_dummy.storage.googleapis.com')
  const modifiedRequest = new Request(request.url, {
    headers: newHeaders,
    method: request.method,
    body: request.body,
    redirect: request.redirect
  })
  return fetch(modifiedRequest)
}

额外检查点

  • 确认CloudFlare的CNAME记录已经正确生效(可以用nslookup cdn.myurl.com验证)。
  • 检查现有页面规则是否存在路径重写、Host头修改等冲突配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 07:31:04