多个域通过 Firebase 托管和 Cloud Functions 提供独立内容?

Multiple domains serving independent content with Firebase hosting and Cloud Functions?

我正在设计和构建一个网络应用程序,用户将在其中上传静态 HTML 模板文件。我的系统将解析他们的模板并为他们的个人目的创建 JavaScript 代码。

我希望每个用户都有自己的名字space,所以理想情况下端点看起来像这样

user1.domain.com/index.html
user1.domain.com/code.js

user2.domain.com
user2.domain.com/code.js

...

不可能以编程方式将静态文件写入 Firebase 托管,因此我设想有一个 Cloud Functions 可以检查 HTTP 主机并提供​​适当的文件。用户 1 的 index.html 模板文件将以类似的方式存储在其自己的子 space 和用户 2 的 Firebase 存储中。

最终目标是将 www.userone.comwww.usertwo.com(我的客户选择的域)分别映射到 user1.domain.comuser2.domain.com,但我可以使用外部 CDN 代理请求。

为了使上述解决方案起作用,我需要手动将域添加到我的 Firebase 项目(使用 Firebase 控制面板),因为每个用户都参与我的应用程序。我预计总共会有 200 位左右的客户。

我可以使用 staging.domain.com/user-{n} 然后我只需要为我的 Firebase 项目配置一个域。但是,这将迫使用户不得不在其模板中使用指向其内容的相对链接。此外,他们可以访问其他用户的内容,即 user-1/index.html 可以访问 ../user-2/code.js,这不是安全风险,但会引起用户更容易出错的愚蠢行为。

有没有办法配置托管以将 *.domain.com 映射到单个 Cloud Function,或者至少 user1.domain.comuser2... 手动映射?

如果不能,使用Google云基础架构是否可以实现上述场景? (我担心的是可以附加到单个项目的域数量存在未记录的限制。)

Is there a way to configure the hosting to map *.domain.com to a single Cloud Function, or at least user1.domain.com, user2... manually?

您可以将多个域映射到一个 Firebase 托管项目。但是每个域都将提供完全相同的内容。

无法将 Firebase 托管配置为为映射到同一项目的不同域提供不同的内容。

另见:

  • How do I make a custom subdomain on Firebase?

现在可以在一个 firebase 项目上有多个站点提供不同的内容。

这里是firebase.json

的例子
{
  "hosting": [ {
      "target": "blog", // "blog" is the applied target-name for the Hosting site myapp-blog.
      "public": "blog/dist"
    },
    {
      "target": "app", // "app" is the applied target-name for the Hosting site myapp-app.
      "public": "app/dist",
      "rewrites": [...] // You can define specific hosting configurations for each site.
    }
  ]
}

请访问https://firebase.google.com/docs/hosting/multisites了解更多信息