Met*_*ata 2 google-cloud-storage
我将图像上传到 google 存储桶,但我不想使用负载平衡器设置 CDN 来工作。
存储状态:存储桶权限:存储对象查看器 - 读取器分配给所有用户,存储传统存储桶读取器分配给所有用户
文件状态:已设置共享公共且有公共链接
负载均衡器:设置为主机名上的路径 /creatives/*
但我总是收到这个消息:
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
</Error>
Run Code Online (Sandbox Code Playgroud)
我注意到的是,一旦我构建了 /creatives/* 的路径,就会有另一个路径 build /* 直接到自动缩放组的后端服务
我在这里缺少任何设置吗?
所以我发现 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.fastly.cdonservice.com,此调用将起作用:my-bucket.fastly。 cdonservice.com/1/1.jpg
但在谷歌云上,您要设置的是一条连接到您在后端创建的 CDN 服务的路径。所以这是最大的不同,让我们假设你创建了这个路径规则。主机:www.googlecdnnonexplainedfeautres.com 路径:/images/* service:yourbackendservice(连接到你要缓存的bucket)
所以你可能认为这应该有效:www.googlecdnnonexplainedfeautres.com/images/1/1.jpg。
但不.. 挖掘日志后,您会在存储桶上找到 404,因为谷歌会在存储桶上搜索此路径:
googleapi.storage.com/my-bucket/images/1/1.jpg。
等等,图片是哪里来的?我以为是钩子。没有谷歌将其作为静态网站根目录(您可以在 S3 上打开和关闭的东西),因此这里是强制性的。
那么这应该如何工作?
修改文件夹结构如下:
Google CDN 存储桶 URL:googleapi.storage.com/my-bucket
文件夹结构:images/1/1.jpg
现在你很好。
此链接现在应该可以使用:
www.googlecdnnonexplainedfeautres.com/images/1/1.jpg。
因此,在您提交用作 google 的 CDN 源的存储桶之前,只需添加另一个与您在 LB 上设置的路径相匹配的顶级文件夹。
当然还有 .. permissions 、 allUsers 、 read 等等。
请享用!
这在 2017 年可能还不存在,但至少到 2021 年就有一个选择。
解释:
lb 的默认行为是将主机之后的整个路径传递到 Cloud Storage。这可能看起来不正确,但它是一个正常的默认值(负载均衡器如何知道您想要包含或排除路径的哪一部分?)。
我面临着同样的问题。
我连接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修复方法是将to的路径前缀重写/。
配置此功能的一种方法是通过 Cloud Console 负载均衡器 UI - 我们可以添加高级路径规则来重写前缀。
请注意:
重要提示:重写按原样添加到路径前面。不支持完整路径重写。HTTP(S) 负载均衡仅实现路径前缀重写。例如,您可以将: 重写
host.name/path1/resource1为host.name/path2/resource1。您无法 重写host.name/path1/resource1为host.name/path1/resource2.
请在此处阅读有关 URL 重写的信息。
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |