GCP负载均衡配置2个Cloud Storage SPA后端路径路由不生效咨询
配置不生效的核心原因
- 第一个常见原因:主机头匹配不一致
你当前的路由规则配置的Host匹配值是mysite.com,但实际访问的域名是www.mysite.com,二者不匹配导致所有www.mysite.com的请求都没有命中你配置的两条路径规则,直接走了默认后端BucketA,看起来就像路由规则完全不生效。 - 第二个常见原因:GCS后端路径未重写
即使主机头匹配正确,负载均衡默认会把完整请求路径原样转发给后端GCS存储桶。比如你访问www.mysite.com/app/index.html时,转发给BucketB的路径是/app/index.html,但你的BucketB是SPA应用,所有静态资源都存在根目录下,GCS找不到/app/前缀的路径就会返回404,看起来也像路由规则失效。 - 第三个常见原因:SPA路由适配未配置
React SPA如果使用browser模式的前端路由,直接访问子路径时GCS会因为找不到对应文件返回404,需要配置存储桶的自定义错误页指向index.html。
不需要使用Traffic Director
Traffic Director是GCP的服务网格流量管理组件,面向的是计算类资源(虚拟机、容器、无服务函数)的服务间流量治理,完全不适用于静态存储桶的路由场景,你使用标准的全球外部HTTP(S)负载均衡的原生功能就可以实现需求。
正确配置步骤
- 修正主机头匹配
把两条路由规则的Host匹配项修改为同时包含mysite.com和www.mysite.com,如果该负载均衡只服务这一个域名也可以直接填*,避免匹配遗漏。 - 给BucketB的路由规则添加URL重写
找到匹配/app、/app/*路径的路由规则,开启URL重写功能,配置路径前缀重写为/,这样转发到BucketB的请求会自动去掉/app前缀,直接匹配BucketB根目录下的静态资源。 - 配置存储桶错误页适配SPA
分别将BucketA、BucketB的404自定义错误页设置为index.html,确保前端路由路径可以正常返回SPA入口文件。 - (可选)清理CDN缓存
如果你开启了负载均衡关联的CDN服务,配置完成后清理对应路径的缓存,避免旧的错误响应影响测试结果。
内容的提问来源于stack exchange,提问作者user3052526
相关产品推荐
相关产品推荐

