我在 GCP 中有一个负载均衡器 (LB),当前正在将一些匹配路径重定向到外部(非 GCP)服务(301 重定向)。我正在尝试添加额外的 prefixMatch 规则集,这些规则将充当单独的第 3 方服务(WebFlow,如果重要的话)的反向代理。
我有一个后端服务(外部),它使用指向第 3 方主机 [mysite.webflow.io] 的完全限定域的 NEG。我已设置规则以将该服务用于 2 个路径(/blog/、/pages/)。
使用以下 YAML 更新 LB 路由规则后,优先级 1 规则仍然有效,但优先级 2 规则(代理)指向我的默认服务中找到的 404 页面。
主机:mysite.com,www.mysite.com
defaultService: projects/my-gcp-project-1/global/backendServices/my-default-service
name: redirect-rules
routeRules:
- urlRedirect:
hostRedirect: subdomain.mysite.com
redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
matchRules:
- prefixMatch: /rad-page-1
- prefixMatch: /rad-page-2
priority: 1
- matchRules:
- prefixMatch: /pages/*
- prefixMatch: /blog/*
priority: 2
routeAction:
weightedBackendServices:
- backendService: projects/my-gcp-project-1/global/backendServices/proxy-backend-service
weight: 100
urlRewrite:
hostRewrite: www.mysite.com
我想知道我是否缺少像preserveHost: true这样的东西?
我刚开始在 GCP 中设置此类规则。预先感谢您的帮助!
当您想要使用 Google Cloud Load Balancer 反向代理或重写 URL,但仅修改主机部分时,此设置 preserveHost: true 至关重要;原来的路径保持不变。
URL 重写将 URL 与资源分开。您可以将人类友好的 URL(更易于用户记住和使用)转换为搜索引擎友好的 URL(更易于搜索引擎查找),或转换为内部特定于实现的 URL。
URL 重写功能执行以下操作:
1.读取请求中传入的URL。
2.替换主机、路径或同时替换主机和路径,在将流量引导到后端服务或后端存储桶之前转换 URL。
请参阅关于 为经典应用程序负载均衡器设置 URL 重写的官方 GCP 文档,另请参阅关于URL 映射的官方 GCP 文档以匹配路径。