gpt4 book ai didi

firebase - 配置类似反向代理的 Firebase 托管解决方案

转载 作者:行者123 更新时间:2023-12-04 01:38:31 32 4
gpt4 key购买 nike

这是我目前的

domain.com ->  website A with its own firebase host (domain.firebase.com)
me.domain.com -> website B with its own firebase host (domain-me.firebase.com)

这并不难设置,只是多个子域重定向到不同的 Firebase 主机。现在,我是什么 想要 , 是一个反向代理接受请求并可以选择将流量路由到各种服务器,同时将客户端 URL 仅保留在 的主域上domain.com .我不确定这是否适用于 Firebase,因为有大量 NGINX 实现示例,但基本上,我想要这个:
domain.com/ ->  website A with its own firebase host (domain.firebase.com)
domain.com/me -> website B with its own firebase host (domain-me.firebase.com)

Firebase 有非常复杂的重定向选项,但重定向也会覆盖客户端 URL。因此,通过重定向,客户端将看到 domain-me.firebase.com 而不是 domain.com/me ,这不是我想要的。

据我所知,我可以使用 Firebase Cloud 函数作为中间件,并根据需要为任一站点提供服务。但是,这会引入大量延迟,因为云功能和 Firebase 托管的网站从冷启动开始都有预热时间。

不给我一个完整和详细的答案是完全可以的,我真的只是想知道这是否可以开始,以及在哪里可以找到相关资源。谢谢!

最佳答案

回答我自己的问题,并以 Doug 对使用 Cloud Run 的回答为基础。有一种快速而轻松的方法可以使用 2 个应用程序设置类似反向代理的实现。去做这个:

1) 构建两个应用程序并将它们放在不同的文件夹中,例如文件夹 A 和文件夹 B。您只需要应用程序的构建文件夹,不需要源代码。

2) 在文件夹 A 和 B 的根目录创建一个新的 Express 应用程序。

3) 让 Express 使用 app.get 管理路由并使用 res.sendFile 返回文件。

4) 按照 Google 的教程将整个 Express 应用容器化 here ,您可以忽略示例应用程序,因为您的新 Express 应用程序就是该应用程序。

5) 作为新服务上传到 Cloud Run。请记住,虽然 Google tuts 没有指定,但您 需要授予您的用户上传到存储桶的权限。您将需要该命令gsutil iam ch user:[user]:objectViewer gs://us.artifacts.[project-name].appspot.com还要确保使用命令 gcloud config set project [project-name] 切换到当前项目如果你有多个项目。

6) 使用谷歌域映射映射到您的域,所以 domain.com .

必须使用域映射,因为 Cloud Run 使用的 URL 是短暂的......因为它是无服务器的。

你的文件夹结构应该是这样的

my-awesome-project
index.js <- Express app and Docker entry point
/package.json <- for your Express app
/A
/B
/Dockerfile
/node_modules

示例路由器将是
app.get('/me/*', (req,res) =>{
res.sendFile(path.join(__dirname+'/B/index.html'));
});

app.get('/*', (req,res) =>{
res.sendFile(path.join(__dirname+'/A/index.html'));
});

在子域上设置您的应用程序的工作方式几乎相同。使用步骤 4 将每个单独的应用程序容器化,然后使用 Google Domain Mapping 分别映射每个域。

关于firebase - 配置类似反向代理的 Firebase 托管解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58547918/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com