我正在设计和构建一个用户将上传静态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.com
和www.usertwo.com
(我的客户选择的域)分别映射到user1.domain.com
和user2.domain.com
,但我可以使用外部CDN实现此目的代理请求。
为了使上述解决方案正常工作,我需要在每个用户参与我的应用时手动将域添加到我的Firebase项目(使用Firebase控制面板)。我预计总共会有大约200名客户。
我可以使用staging.domain.com/user-{n}
,然后我只需为Firebase项目配置一个域。但是,这会强制用户必须在其模板中使用其内容的相对链接。此外,他们可以访问其他用户的内容,即user-1/index.html
可以访问../user-2/code.js
,这不会带来安全风险,但会引起用户更容易出错的风险。
有没有办法配置托管以将*.domain.com
映射到单个云功能,或者至少user1.domain.com
,user2...
手动映射?
如果没有,可以使用Google Cloud Infrastructure实现上述方案吗? (我担心的是,可以附加到单个项目的域数量没有文档限制。)
答案 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了解更多信息