如何解决将请求的子域/主机从 GCP 负载均衡器转发到 Cloud Run
我有一个被多家公司使用的 Express 应用。每个公司都有自己的子域来调用应用程序api,例如company1.mydomain.com
、company2.mydomain.com
。在 Express 中,我们读取子域的值以确定我们必须为该公司执行的自定义操作。
我们正在使用带有 GCP 负载均衡器的 Cloud Run 将此应用移至 GCP,并在后者上设置所有子域。我们现在正在尝试读取子域,但它包含 Cloud Run URL (xxxxx.a.run.app
) 的子域值。我们试图弄清楚如何获取用户请求的子域(负载均衡器中配置的子域),但该值似乎没有转发到 Cloud RUN。
是否有任何我们遗漏的设置或帮助我们从 Cloud Run 读取子域值的内容?
PD:我们尝试使用负载均衡器的自定义标头,但没有与子域值相关的选项
PD2:我们还尝试检查其他标头(包括 X-Somethingxx
GCP 标头),但一无所获
解决方法
我找到了解决方案。它基于我写的 a recent article。
解决办法是:
- 创建 HTTPS 负载平衡器
- 定义一个调用 run.app 的互联网 NEG
- 在后端,使用此 NEG 并添加自定义标头主机,其值为 Cloud Run 服务的完全限定网址
xxxxx.a.run.app
(如我的文章中所述) - 添加值为
x-forwarded-host
的另一个自定义标头(您需要的这个标头,例如{tls_sni_hostname}
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。