此示例演示了如何重写传统应用负载均衡器请求中指定的路径。
如需为全球级外部应用负载均衡器和区域级外部应用负载均衡器配置流量管理,请参阅以下页面:
准备工作
了解网址重写。
网址重写示例假定您已按照使用 Cloud Storage 存储分区设置负载均衡器中所述的步骤创建了外部应用负载均衡器。
该示例将引导您创建两个网址:
http://IP_ADDRESS/never-fetch/three-cats.jpg
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
其中
/never-fetch/three-cats.jpg
存储在/cats
(默认服务)中,而/love-to-fetch/two-dogs.jpg
存储在/dogs
中。此时,网址映射如下所示:
gcloud compute url-maps describe http-lb
creationTimestamp: '2020-10-13T11:18:10.561-07:00' defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats fingerprint: MKfYsObzqgw= hostRules: - hosts: - '*' pathMatcher: path-matcher-1 id: '1420501688756228493' kind: compute#urlMap name: test-bucket pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /love-to-fetch/* service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
修改网址映射
在此示例中,您将重写 /love-to-fetch/
网址,以便用户可以通过此简化网址访问 two-dogs.jpg
图片:
http://IP_ADDRESS/two-dogs.jpg
为此,请按如下所示修改负载均衡器的网址映射:
控制台
修改负载均衡器
- 进入 Google Cloud 控制台中的“负载均衡”页面。
进入“负载均衡”页面 - 点击
http-lb
。 - 点击修改 。
- 不关闭窗口继续操作。
更改主机和路径规则
- 在屏幕左侧列中,点击主机和路径规则。
- 选择高级主机和路径规则(网址重定向、网址重写)。
- 点击包含非默认路径规则的行,在本例中,以星号 (
*
) 表示所有主机的行。 - 点击
/love-to-fetch/* Route traffic to a single backend: dogs
行相应的铅笔图标 。 - 在路径下,删除
/love-to-fetch/*
并添加/*
。 - 在操作下,选择将流量路由到单个后端。
- 点击附加操作(网址重写)。
- 将主机重写留空。
- 在路径前缀重写下,输入
/love-to-fetch/
。 - 在后端下,选择
dogs
。 - 点击保存。
点击完成。 新的主机和路径规则如下所示:
路径 操作 后端 任何不匹配的项(默认) 将流量路由到单个后端 cats /* 将流量路由到单个后端 dogs 如果看起来都正确,请点击更新以更新您的 HTTP 负载均衡器。
gcloud
创建一个 YAML 文件
/tmp/http-lb.yaml
,并务必将 PROJECT_ID 替换为您的项目 ID。当用户请求路径
/*
时,路径会在后端中重写为内容的实际位置,即/love-to-fetch/*
。defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: http-lb pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats name: path-matcher-1 pathRules: - paths: - /* routeAction: urlRewrite: pathPrefixRewrite: /love-to-fetch/ service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs tests: - description: Test routing to backend bucket, dogs host: example.com path: /love-to-fetch/test service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
验证网址映射。
gcloud compute url-maps validate --source /tmp/http-lb.yaml
如果测试通过并且命令输出成功消息,请将更改保存到网址映射。
更新网址映射。
gcloud compute url-maps import http-lb \ --source /tmp/http-lb.yaml \ --global
测试
请记下预留的 IPv4 地址:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
在等待几分钟,直到更改完成传播后,您可以测试此设置。
在命令行上,运行以下 curl 命令:
curl http://IP_ADDRESS/two-dogs.jpg
在浏览器中,打开 http://IP_ADDRESS/two-dogs.jpg
。