我们在 GCP 存储桶上部署了一个单页 Web 应用程序,前面有一个负载均衡器。
所有 URL (例如)example.com/login
都应重写为example.com/#/login
。如果不重写,默认行为是去获取一些login.html
,但我们只有并且需要index.html
,应用程序会处理路由。
如何配置负载均衡器来实现这样的任务?
答案1
Google LB 具有以下功能:
- URL 重定向
- URL 重写
基于URL 前缀自 2020 年夏季以来:https://cloud.google.com/load-balancing/docs/https/setting-up-traffic-management
似乎 LB 是原始的重写引擎(只有前缀,没有正则表达式),因此您无法使用 LB 运行 SPA 应用,请参阅https://stackoverflow.com/questions/72648022/deploy-spa-application-on-google-cloud-storage-using-load-balancer-and-cdn
2023 年更新实际上,可以使用 GCP 提供的 Bucket 默认 404 处理程序来创建 SPA 应用index.html
。请参阅上面的链接。
更新2 2023Google LB 具有匹配通配符*
(包括递归**
)的能力:https://cloud.google.com/load-balancing/docs/url-map-concepts#wildcards-regx-dynamic-route
答案2
目前,GCP 上无法在 LB 级别进行重定向。您可以参考这有些用户对如何在应用内重定向有建议。如果这没有帮助,您可以提交功能要求使用负载平衡组件Google 问题跟踪工具。