NEBULA DATA星雲數據 | GCP Cloud Load Balancing 地址重写:让流量更精准地到达你的服务
GCP Cloud Load Balancing 的地址重写(URL Rewrite)是指在请求到达后端服务之前,修改请求的 URL 路径的能力。它是一种高级路由策略,允许你根据不同的规则修改传入的 URL,并将修改后的 URL 发送到后端服务。
简单来说,就是把客户端访问的 URL 按照你定义的规则转换成另一个 URL 再发送给后端服务器。
工作原理
-
1.客户端发起请求: 客户端向 GCP Cloud Load Balancing 发送带有特定 URL 的请求。 -
2.GCP Cloud Load Balancing 评估规则: GCP Cloud Load Balancing 根据你配置的 URL 重写规则评估请求的 URL
-
3.后端处理请求: 后端服务接收并处理修改后的 URL 请求。
-
4.请求转发: GCP Cloud Load Balancing 将修改后的(或原始的,如果没有匹配到规则)URL 请求转发到后端实例或服务。
-
5.匹配规则并重写 URL (如果匹配): 如果 URL 匹配到任何定义的规则,GCP Cloud Load Balancing 会按照规则修改 URL。
为什么要使用地址重写?
-
1.简化后端服务逻辑: 后端服务只需要处理修改后的、统一格式的 URL,无需关心客户端最初访问的 URL 结构。这降低了后端代码的复杂性,提高了可维护性。
-
2.改善 SEO (搜索引擎优化): 可以将不友好的 URL(包含参数、id等)重写成更友好的、更易于搜索引擎抓取的 URL,提高网站的搜索排名。
-
3.增强用户体验: 提供更清晰、更易记的 URL,提高用户体验。例如,可以将 /product?id=123 重写为 /products/123。
-
4.隐藏后端服务结构: 可以隐藏后端服务的内部结构,防止敏感信息暴露。例如,可以避免客户端直接访问 /internal/api/v1/data,而是将其重写为更通用的 /data。
案例——将对负载均衡器 /hello 路径访问重写为仅访问负载均衡器的根地址
现在我们开始配置负载均衡器的路径重写
1.进入我们的负载均衡器的配置页面,选择Routing rule:
3.点击“CODE GUIDENCE”,选择“Rewrite URL host/path”即可获得重写URL的代码模板,将其复制粘贴到“Path matcher”
4.定制路径匹配器:
- 由于我们只需要重写路径前缀,所以需要删除代码模板中的 hostRewrite 参数。
- 填写“主机”(Hosts)字段修改 Path Matcher 中的占位符:
$[DEFAULT_SERVICE_URL]: 如果没有任何规则匹配,请求将被转发到默认的后端服务。将其替换为默认后端服务的完整 URL。
$[PRIORITY]: 此路由规则的优先级。这是一个 0 到 2,147,483,647 之间的整数,数值越小,优先级越高。
$[SERVICE1_URL]: 你的后端服务(即处理 /hello 请求的服务)的完整 URL。
修改$[DEFAULT_SERVICE_URL]和$[SERVICE1_URL] 的格式:https://www.googleapis.com/compute/v1/projects/
- lmatchRules: 这是定义匹配规则的列表。每个匹配规则包含以下内容:
prefixMatch: /: 这指定了路径匹配规则。/ 表示匹配所有以 / 开头的路径,也就是所有路径。如果只想匹配特定的路径前缀,可以修改这里的值,例如 /api 将只匹配以 /api 开头的路径。
- lurlRewrite: 这定义了如何重写 URL。
npathPrefixRewrite: /hello: 这指定了路径前缀重写规则。它会将 prefixMatch 匹配到的路径前缀替换为 /hello
5.完成 Path matcher 的配置后,保存负载均衡器的配置,点击“Done”和“Update”
6.验证:
现在,尝试直接访问负载均衡器的地址(不加 /hello 后缀)。如果配置正确,负载均衡器会将请求的路径重写,并将其转发到您配置的后端服务(原本处理 /hello 请求的服务),您应该能看到预期的响应,这表明路径重写已成功生效。
总结