如何在没有负载均衡器的情况下在 GCP 上配置静态网站(仅限 http)?

How to configure a static website (only http) on GCP without a load balancer?

我有一个非常 的简单网站,我想将其托管在 GCP 存储桶中。我希望它只使用 http(而不是 https)并且不想添加负载均衡器,大多数静态 GCP 网站示例都显示添加负载均衡器。

我在没有负载均衡器的情况下找到的唯一示例显示将 CNAME 记录指向 c.storage.googleapis.com,它将连接到名为 www.mysite.com.

的存储桶

到目前为止,一切正常 除了 它不包括访问未附加 www 子域的域 (mysite.com)。而且,我无法附加仅指向 mysite.com 到 www.mysite.com 的别名记录,因为 Google Cloud DNS 没有别名记录。

似乎会有一个非常简单的解决方案,但我很困惑。

根据设计,您无法在“根”域级别创建 CNAME 记录。它必须指向一个子域。除非你将它指向其他域。

根据设计,存储桶使用 CNAME 记录提供服务,例如 www.mysite.com 指向 c.storage.googleapis.com

因此您被迫使用 www 前缀或其他子域。

有个mention in the documentation of a possibility to serve bucket using A record.

You can use a bucket name in a DNS record as part of a CNAME or A redirect which gave me an idea.

但这是一个“脆弱且硬连线”的解决方案

您需要使用您网站的副本创建名为“mysite.com”的存储桶。

然后您转到您的托管区域并编辑 A 记录以指向 c.storage.googleapis.com 的 IP,即 74.125.143.128(至少在我写这篇文章的那一刻)。接下来,您将 CNAME 记录 www.mysite.com 更改为指向 mysite.com 以将 www 重定向到非 www.

然后等到更改传播,你就设置好了 :) 我测试了它,它可以工作。我不喜欢等待,所以我将所有涉及的记录的 TTL 更改为 1 分钟。

然后你会问自己为什么我写它是“脆弱和硬连线的”?在有人更改 c.storage.googleapis.com 的 IP 之前,它将一直有效。 也许还有其他方法可以将 DNS 记录设置为指向 c.storage.googleapis.com 而不是 IP,但我无法弄清楚。

如果您不更改 CNAME 记录并将其指向 c.storage.googleapis.com 然后您可以访问网站(是否相同由您决定)。一种可用 www - 另一种不带。