Google Cloud Load Balancer - 子域重定向到存储桶中的特定文件夹

Posted

技术标签:

【中文标题】Google Cloud Load Balancer - 子域重定向到存储桶中的特定文件夹【英文标题】:Google Cloud Load Balancer - Subdomain redirection to specific folder in the bucket 【发布时间】:2021-01-23 23:41:14 【问题描述】:

目前我们有以下要求:

每个用户都可以在 Google 存储桶下拥有自己的子域和文件夹,其中包含应通过该子域提供的内容,例如:

[domain] user1.example.com -> [bucket] example.com/user1/index.html
[domain] user2.example.com -> [bucket] example.com/user2/index.html

所以桶有以下结构:

 - [Bucket] example.com
     - [Folder] user1
       - [File] Index.html
     - [Folder] user2
       - [File] Index.html
     - etc..

子域将被动态添加,我不能只设置地图规则(可以通过 API 更新它,但我猜他们对地图规则有限制)。

这些 HTML 内容也应通过 HTTPS 提供。

我在 GCP 上设置了域、存储桶、负载均衡器,但目前在 LoadBalancer 上遇到 URL/路径重写。

所以问题 - 是否可以调用“user1.example.com”并通过负载均衡器从存储桶“/example.com/user1”文件夹中提供 HTML 连接?

是否可以使其与上述架构一起使用,或者它需要为每个用户提供单独的存储桶,或者它只能与将流量重定向到特定文件夹/域的单独反向代理一起使用?

谢谢。

【问题讨论】:

【参考方案1】:

正如您所指出的,没有通用的方法可以将主机名映射到路径的一部分。您可以为每个子域设置一个单独的 hostRules 条目,但限制为 50 个条目。您可以为您拥有的每 50 个子域创建全新的转发规则和目标 http 代理。这将扩大规模,但仍然很复杂。

或者,您可以指向运行 Envoy 或 HAProxy 等代理的实例的后端服务。它们具有强大的重写功能,可以做到这一点。

【讨论】:

谢谢!我刚刚创建了单独的虚拟机实例,它实际上将请求代理到谷歌存储桶。看起来可以在 AWS 上对存储桶进行这些路由,但在 GCP 上是不可能的,至少目前是这样。

以上是关于Google Cloud Load Balancer - 子域重定向到存储桶中的特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google Cloud Load Balancer 设置 SSL 证书

Google Cloud Load Balancer - 子域重定向到存储桶中的特定文件夹

使用 Google Cloud Load Balancer 迁移 App Engine 会导致约 1 小时的停机时间

How Load Balancing Policies Work

如何在 Google Cloud Datastore 上更新交易中的帐户余额

hue的load balance