多个域通过 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.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
映射到单个 Cloud Function,或者至少 user1.domain.com
、user2...
手动映射?
如果不能,使用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了解更多信息
我正在设计和构建一个网络应用程序,用户将在其中上传静态 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.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
映射到单个 Cloud Function,或者至少 user1.domain.com
、user2...
手动映射?
如果不能,使用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了解更多信息