更新时间:2024-12-04 GMT+08:00
ELB Ingress配置Rewrite重写
独享型ELB的Ingress支持为正则匹配的URL配置Rewrite重写的能力。规则如下:
- 为ingress配置一个path为正则匹配的URL,如 /first/(.*)/(.*)/end
- 配置rewrite重写的注解,匹配path中的正则表达式
例如 :
- path 配置为 /first/(.*)/(.*)/end,注解配置为 /$1/$2。当客户发送的请求为 /first/aaa/bbb/end 时,path会匹配到 /first/(.*)/(.*)/end,重写规则会把 $1 替换成 aaa,$2替换成 bbb,最终后端服务接收到的请求路径为 /aaa/bbb。
- path配置为 /first/(.*)/end,注解配置为 /newpath/$1。当客户发送的请求为 /first/aaa/end 时,path会匹配到 /first/(.*)/end,重写规则会把 $1 替换成 aaa,最终后端服务接收到的请求路径为 /newpath/aaa。
约束与限制
- ELB Ingress高级转发策略仅支持使用独享型ELB。
- ELB Ingress高级转发策略支持的集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上。
使用YAML配置Ingress重写URL规则
Ingress重写URL规则可通过注解实现,示例如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-rewrite-url namespace: default annotations: kubernetes.io/elb.id: df76342f-e898-402a-bac8-bde5bf974da8 kubernetes.io/elb.class: performance kubernetes.io/elb.port: '80' kubernetes.io/elb.rewrite-target: /$1/$2 # 重写路径的配置 spec: rules: - host: "example.com" http: paths: - path: /first/(.*)/(.*)/end # 该path会被重写 backend: service: name: test-service port: number: 8888 property: ingress.beta.kubernetes.io/url-match-mode: REGEX pathType: ImplementationSpecific ingressClassName: cce
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
kubernetes.io/elb.rewrite-target |
是 |
string |
重写路径的信息。 格式说明:以 "/" 开头的合理的正则匹配规则。 参数说明:对单个Ingress下正则匹配的URL转发规则生效,配置删除后自动清理对应的重写规则。 该注解不能和灰度发布的注解一起配置。 |
使用curl测试重写的能力,其中${ELB_IP}为Ingress访问的IP:
# curl -H "Host:example.com" ${ELB_IP}/first/aaa/bbb/end
最终访问路径会被重写为 /aaa/bbb。
父主题: ELB Ingress管理