配置重写请求路径可以使HTTP请求的路径在转发到目标应用程序之前被重写为指定值。本文介绍如何配置重写请求路径。
前提条件
已完成准备工作,并部署httpbin应用和sleep应用。具体操作,请参见准备工作。
操作步骤
为httpbin服务配置虚拟服务,当匹配到发往httpbin服务的请求路径为
/get
时,将请求路径重写为/status/400
。登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 ,然后单击创建。
在创建页面,进行如下配置,单击预览,确认YAML内容无误后,单击确认,然后单击创建。
预览的YAML如下。关于配置项的说明,请参见虚拟服务(Virtual Service)CRD说明。
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin namespace: default spec: hosts: - httpbin.default.svc.cluster.local http: - rewrite: uri: /status/400 route: - destination: host: httpbin.default.svc.cluster.local
在ACK集群对应的KubeConfig环境下,执行以下命令,验证路径重写配置是否生效。
kubectl exec -it deploy/sleep -- curl httpbin:8000/get -I
预期输出:
HTTP/1.1 400 Bad Request server: envoy date: xxx, xx xxx 202x xx:xx:xx GMT content-type: text/html; charset=utf-8 access-control-allow-origin: * access-control-allow-credentials: true content-length: 0 x-envoy-upstream-service-time: 4
可以看到在sleep容器内部访问httpbin服务的
/get
路径,发往此路径的请求应收到200响应状态码,但实际收到400响应状态码。预期输出表明路径重写生效,请求的路径被重写为/status/400
。
文档内容是否对您有帮助?