是否可以在没有域名的情况下为 GCS 存储桶设置索引文件?

Is it possible to set index file for GCS buckets without domain naming?

我们有一个特定的情况,我们希望从 GCS(通过负载均衡器 w G CDN)为静态网站提供服务,我们强烈希望不为存储桶使用域命名。

我们不想要这个的原因是域验证过程对用户非常不友好,而且我们的用户需要执行额外的步骤(我认为我们应该能够相当广泛地自动化这个过程,但这又是一个吨我试图规避的额外开发工作)。

我试过了

gsutil web set -m index.html gs://{bucket-name}

并且我设置mike.adhero.io一个记录到负载均衡器的IP。但它仍然显示 xml 样式丢失错误。 mike.adhero.io/index.html 按预期工作

有办法解决这个问题吗?

Is it possible to set index file for GCS buckets without domain naming?

没有。原因是这会破坏正常存储桶访问(API 请求)的 API 行为。

MainPageSuffixNotFoundPage 网站配置仅用于通过 CNAME 端点或云负载平衡到达云存储的请求。例如,对 www.example.com 的请求会显示索引页,但对 storage.googleapis.com/www.example.com 的等效请求不会。

因此,API 向云存储域(例如 storage.googleapis.com/www.example.com 请求的行为得以保留。例如,您可以像对待任何其他存储桶一样继续列出 www.example.com 存储桶中的对象。对于 www.example.com 存储桶,您收到的对象列表包括 404.html 和 index.html.

这记录在以下 Google 文档中:

Static Website API Behaviour


不,正如 John Hanley 所说,这是不可能的。当您配置没有域命名的存储桶时,这可以被视为云上的存储 space,您需要指定路径。您可以将其视为一个硬盘驱动器和一个文件夹,这就是为什么只有在指定路径和文件名时才能正常工作的原因 "mike.adhero.io/index.html" 。使用域名配置存储桶后,API 会识别出您想要使用 "Website service" 而不是 "Storage bucket service"。

根据我的理解,您正在尝试使用具有存储桶服务配置的网站服务,根据设计和目标,这不是 possible/viable。如有错误请指正

另外正如 John 提到的,此选项需要在 Cloud Storage 中配置(当您指定域名时),因为 Load Balancer 仅作为配置的后端服务的访问点和负载分配。

关于域验证过程 [0],是的,最初可能有点困难,一旦你完成一两次这个过程就会非常容易。我正在与您分享几个视频,第一个是关于 Web 搜索控制台 [1],第二个是将 TXT 记录添加到 CLOUD DNS [2],考虑到您的注册商可能是 Google Cloud DNS。大家可以注意流程是一样的,只需要考虑各个注册商的流程不同就可以了。

希望这些信息对您有所帮助
祝你有美好的一天!


[0] https://cloud.google.com/storage/docs/domain-name-verification
[1] https://www.youtube.com/watch?v=VRCmKkzeeMI
[2] https://www.youtube.com/watch?v=ixIHDdHeInU