多个域使用Firebase托管和云功能提供独立内容?

时间:2018-05-13 11:49:27

标签: firebase google-cloud-functions firebase-hosting

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

我希望每次使用都有自己的命名空间,所以理想情况下端点看起来像这样

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

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

...

无法以编程方式将静态文件写入Firebase托管,因此我设想使用云功能来检查HTTP主机并提供​​相应的文件。用户1的index.html模板文件将以类似的方式存储在Firebase存储在其自己的子空间和用户2中。

最终目标是让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映射到单个云功能,或者至少user1.domain.comuser2...手动映射?

如果没有,可以使用Google Cloud Infrastructure实现上述方案吗? (我担心的是,可以附加到单个项目的域数量没有文档限制。)

1 个答案:

答案 0 :(得分:0)

现在一个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了解更多信息