【问题标题】:Firebase Hosting: is it possible to rewrite a URL and pass part of the path to Cloud Run?Firebase 托管:是否可以重写 URL 并将部分路径传递给 Cloud Run?
【发布时间】:2021-01-05 22:02:59
【问题描述】:

我想在 Cloud Run 上使用 Firebase 托管在 /api 前缀上放置一个 API。因此,/api/something 的传入请求由 API /something 处理程序处理。看起来很简单,但我想不通,所以我想知道 Firebase 托管是否有可能。

我尝试的第一件事是:

"rewrites": [
      {
        "source": "/api",
        "run": {
          "serviceId": "my-api",
          "region": "us-central1"
        }
      }
    ]

这会正确地将 /api 请求路由到服务根 /,但调用 /api/something 只需 404 秒。

第二次尝试使用"source": "/api/**""regex": "/api(/.*)?",。这会正确接收 /api/something 之类的请求,但会将其路由到 API 根 / 而不是 /something

理想情况下,我希望它去除 /api 前缀,或者允许我在路由 url 上使用提取的正则表达式组。 谢谢。

【问题讨论】:

  • 你是如何解决这个问题的? (我假设您没有使用重写,而是使用其他选项)
  • 我最终没有使用 Firebase 托管,而是使用托管在云上的 http 网关/代理(在我的情况下为特使代理)运行本身

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


【解决方案1】:

理想情况下,我希望它去除 /api 前缀,或者允许我在路由 url 上使用提取的正则表达式组。

这是不可能的。请求的完整 URI 将始终保留并转发到 Cloud Run。您在 Cloud Run 端的代码应该能够处理发送到 Firebase 托管的完整路径。如果您想去除任何路径前缀,则必须在部署到 Cloud Run 的代码中。

【讨论】:

  • 我明白了,没有太多的重写,但我认为我可以使用它。谢谢!
  • 在向 Cloud Functions 或 Cloud Run 发送请求的情况下,与其说是纯粹的重写,不如说是转发。他们似乎选择使用现有的重写语法来实现这一点。
猜你喜欢
  • 2020-10-12
  • 2022-01-27
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多