首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google CDN连接到CDN创建nosuch关键错误

Google CDN连接到CDN创建nosuch关键错误
EN

Stack Overflow用户
提问于 2017-11-05 01:20:18
回答 2查看 776关注 0票数 3

我上传了图片到谷歌存储桶,我没有尝试设置使用负载均衡器的CDN工作。

存储状态:存储桶权限:存储对象查看器-读取器分配给allUsers,存储传统存储桶读取器分配给allUsers

文件状态:设置了共享公共,并且有公共链接

负载均衡器:在主机名上设置为path /creative/*

但我总是收到这样的消息:

代码语言:javascript
复制
 <Error>
 <Code>NoSuchKey</Code>
 <Message>The specified key does not exist.</Message>
 </Error>

我注意到的是,一旦我构建了/creatives/*的路径,就有另一个路径build /*直接指向自动伸缩组的后端服务

我是否遗漏了任何设置?

EN

回答 2

Stack Overflow用户

发布于 2017-11-12 21:55:56

因此,我发现Google CDN + Google http负载均衡器的工作方式与其他CDN不同。

使用常规的CDN,您可以将源指向您的存储桶HTTP地址,并处理/结构。例如: Google CDN Bucket URL: googleapi.storage.com/my-bucket文件夹结构: /1/1.jpg

正常的CDN源将指向googleapi.storage.com/my-bucket,您将获得CDN的新服务端点,如:my-bucket.fast ly.cdonservice.com,此调用将起作用:my-bucket.fast ly.cdonservice.com/1/1.jpg

但在google cloud上,您设置的是一条连接到您在后端部分创建的CDN服务的路径。这就是最大的区别,让我们假设你创建了这个路径规则。host:镜像路径:/ www.googlecdnnonexplainedfeautres.com /* service: yourbackendservice (连接到您想要缓存的bucket )

因此,您可能会认为这应该是可行的: www.googlecdnnonexplainedfeautres.com/images/1/1.jpg.

但是不..。挖掘日志后,您将在存储桶上找到404,因为google将在存储桶上搜索以下路径:

googleapi.storage.com/my-bucket/images/1/1.jpg.

等等,图像是从哪里来的?我以为这是个钩子。不,谷歌认为这是一个静态的网站根(你可以在S3上打开和关闭的东西),所以这里是强制性的。

那么,这应该如何工作呢?

修改文件夹结构,如下所示:

Google CDN Bucket URL: googleapi.storage.com/my-bucket

文件夹结构: images/1/1.jpg

现在你很棒了。

此链接现在应该起作用了:

www.googlecdnnonexplainedfeautres.com/images/1/1.jpg.

因此,在提交一个存储桶作为google的CDN源之前,只需添加另一个与您在LB上设置的路径相匹配的顶级文件夹。

当然还有..permissions、allUsers、read等。

EnjoY!

票数 6
EN

Stack Overflow用户

发布于 2021-04-28 00:52:59

您可以使用URL重写来解决此问题。

这在2017年可能还不存在,但至少在2021年是有选择的。

解释:

lb的默认行为是将host之后的整个路径传递到云存储。这看起来可能不正确,但这是一个合理的默认值(负载均衡器如何知道您想要包括或排除路径的哪一部分?)。

我也面临着同样的问题。

我将mydomain.com/static/*连接到我的云存储桶static-assets

在访问mydomain.com/static/static-asset.jpg时,负载均衡器会为具有key static-assets/**static**/static-asset.jpg的对象请求云存储。

因为对象的实际键是static-assets/static-asset.jpg,所以这将返回一个NoSuchKey响应。

修复方法是将/static的路径前缀重写为/

配置的一种方式是通过负载均衡器UI--我们可以添加一个高级路径规则来重写前缀。

请注意:

重要提示:重写将按原样添加到路径前面。不支持完整路径重写。HTTP(S)负载均衡仅实现路径前缀重写。例如,您可以重写:host.name/path1/resource1 to host.name/path2/resource1。您不能将host.name/path1/resource1重写为host.name/path1/resource2

阅读有关URL重写here的内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47113408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档