You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
自定义转发规则配置示例
配置转发流量重写
复制全文
下载 pdf
配置转发流量重写
ALB Ingress 支持重写转发规则,当请求经过 ALB 时,ALB 可以直接改写请求路径,向后端服务器请求新路径内容,帮助您灵活地变更后端业务。​
注意​
配置 ALB Ingress 前,请务必仔细阅读 ALB Ingress 使用注意事项。​
前提条件​
  • 已安装 alb-ingress-controller 组件,并升级至 v0.35.0 及以上版本。详情请参见 升级组件。​
使用限制​
  • 不同 ALB 实例类型支持的配置方式不同:​
  • 标准版:支持通过控制台或 YAML 配置。​
  • 基础版:仅支持通过 YAML 配置。​
操作步骤​
通过控制台配置​
说明​
仅对接 ALB 标准版时支持使用控制台配置,如需对接 ALB 基础版,请参见下文中的 YAML 配置。​
  1. 单击左侧导航栏中的 集群。​
  1. 在集群列表页面,单击需要配置路由规则的目标集群。​
  1. 在集群管理页面的左侧导航栏中,选择 服务与路由 > 路由规则,单击 创建路由规则。​
  • 在 Ingress 类型 配置项中,选择 应用型负载均衡 ALB。​
  • 在 自定义转发规则 配置项中,勾选 启用,开启自定义转发规则,并配置转发规则详情。​
​​​
​
配置项​
说明​
转发条件​
配置转发条件,包括 域名、路径 和 HTTP 标头。​
  • 转发条件允许单独配置,也可以组合配置。当配置多个转发条件组合时,这些转发条件之间是 且 的关系。例如,假设您在一条转发规则中同时配置了域名和路径,只有同时匹配指定域名和路径的请求,才会匹配这条转发规则。​
  • 同一转发条件下允许配置多个值,这些值之间是 或 的关系。例如,假设您在域名转发条件下配置了多个值,当请求的域名匹配其中任何一个值时,即满足该转发条件。​
转发动作​
  • 转发动作 1 配置为 重写,并配置转发路径。​
  • 转发动作 2 配置为 转发至,并配置请求被转发到的目标服务和端口。​
​
  1. 单击 确定,完成配置。​
通过 kubectl 命令行配置​
ALB Ingress 支持通过 Annotation 配置转发流量重写规则。对接 ALB 标准版和基础版时的配置略有不同。​
​
ALB 标准版
ALB 基础版
​
ALB 标准版的配置示例和注解说明,如下所示:​
注意​
注解中的{{service-name}}字段必须与spec.rules中配置的后端服务名称对应一致,例如在本例中,正确的注解为ingress.vke.volcengine.com/loadbalancer-actions.service-demo。​
​
apiVersion: networking.k8s.io/v1​
kind: Ingress​
metadata:​
name: alb-ingress # 自定义路由规则名称​
namespace: default # 路由规则所属的命名空间​
annotations:​
ingress.vke.volcengine.com/loadbalancer-actions.{{service-name}}: | # {{service-name}} 需要替换为服务的名称​
[​
{​
"type": "Rewrite",​
"rewriteConfig": {​
"path": "/aaa"​
}​
}​
]​
spec:​
ingressClassName: alb # ALBInstance 的资源名称​
rules:​
- host: example.com # 需要对外提供访问的域名​
http:​
paths:​
- pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)​
path: / # 请求匹配的路径​
backend:​
service:​
name: service-demo # 需要对接的服务名称,注意需要和注解 loadbalancer-actions.{{service-name}} 里的 {{service-name}} 一致​
port: ​
number: 80 # 需要对接服务的端口号​
​
ingress.vke.volcengine.com/loadbalancer-actions.{{service-name}}注解中的参数说明如下表所示。​
​
字段​
类型​
描述​
默认值​
type​
String​
自定义转发规则的动作类型,当配置重写时,必须配置为Rewrite。​
无​
rewriteConfig.path​
String​
配置转发路径。​
无​
​
​
​
结果验证​
查看配置​
说明​
ALB 标准版和基础版的转发规则详情界面略有不同,本文以查看 ALB 标准版界面为例。​
  1. 单击左侧导航栏中 实例管理,在实例列表中选择目标 ALB 实例,在 操作 栏中单击 配置监听器。​
  • ​alt​​
  1. 在 监听器 页面中,选择目标监听器,在 操作 栏中单击 编辑转发规则,查看当前监听器的转发规则。可以看到新增的重写转发规则。​
  • ​​​
  1. 单击转发规则中的 ​alt​,支持查看规则详情。规则配置详情,应该与下发的规则一致。​
  • ​​​
访问验证​
说明​
验证功能前,您需要在集群中部署后端应用和服务。本例中以 nginx 镜像,服务提供路径为/aaa为例。部署方式可参见 使用 ALB Ingress 实现业务发布。​
使用 ALB Ingress 中配置的域名访问服务。其中14.***.***.***为 ALB 公网 IP 地址。​
​
curl -H "Host: example.com" http://14.***.***.***​
​
预期结果如下,当访问请求的域名为example.com,原始路径为/时,路径被改写为/aaa,能够通过 ALB Ingress 正确访问到后端的服务。​
​
<!DOCTYPE html>​
<html>​
<head>​
<title>Welcome to nginx!</title>​
<style>​
html { color-scheme: light dark; }​
body { width: 35em; margin: 0 auto;​
font-family: Tahoma, Verdana, Arial, sans-serif; }​
</style>​
</head>​
<body>​
<h1>Welcome to nginx!</h1>​
<p>If you see this page, the nginx web server is successfully installed and​
working. Further configuration is required.</p>​
​
<p>For online documentation and support please refer to​
<a href="http://nginx.org/">nginx.org</a>.<br/>​
Commercial support is available at​
<a href="http://nginx.com/">nginx.com</a>.</p>​
​
<p><em>Thank you for using nginx.</em></p>​
</body>​
</html>​
​
正则表达式匹配​
ALB 标准版​
匹配规则​
当对接 ALB 标准版时,支持基于正则表达式的匹配和替换,基本规则如下:​
  • URI 重写规则​
  • 静态路径:直接填写目标路径,例如 /aaa。​
  • 动态路径​
  • 允许在 Ingress 的path中填写一个或多个正则表达式,同时支持填写多个变量()。然后在rewriteConfig.path中通过 ${1}、${2} 或 ${3} 获取一个或多个变量,最多支持获取三个变量。​
  • 支持基于正则表达式匹配的结果作为参数自由组合,拼接出您想要的重写规则。​
  • 通过正则表达式替换的逻辑为:客户端的请求匹配到正则表达式,正则表达式中有多个(),且rewriteConfig.path注解中含有变量 ${1}、${2}和 ${3}中的一个或多个。​
匹配示例​
ALB 标准版的匹配示例,如下所示:​
注意​
注解中的{{service-name}}字段必须与spec.rules中配置的后端服务名称对应一致,例如在本例中,正确的注解为ingress.vke.volcengine.com/loadbalancer-actions.service-demo。​
​
apiVersion: networking.k8s.io/v1​
kind: Ingress​
metadata:​
name: alb-ingress # 自定义路由规则名称​
namespace: default # 路由规则所属的命名空间​
annotations:​
ingress.vke.volcengine.com/loadbalancer-actions.{{service-name}}: | # {{service-name}} 需要替换为服务的名称​
[​
{​
"type": "Rewrite",​
"rewriteConfig": {​
"path": "/${2}"​
}​
}​
]​
spec:​
ingressClassName: alb # ALBInstance 的资源名称​
rules:​
- host: example.com # 需要对外提供访问的域名​
http:​
paths:​
- pathType: Prefix # 路径匹配规则,默认为 Prefix(前缀匹配)​
path: /~gateway(/|$)(.*) # 请求匹配的路径,允许使用正则表达式进行匹配​
backend:​
service:​
name: service-demo # 需要对接的服务名称,注意需要和注解 loadbalancer-actions.{{service-name}} 里的 {{service-name}} 一致​
port: ​
number: 80 # 需要对接服务的端口号​
​
说明​
由于 ALB 产品中规定正则表达式必须以~开头,同时 Kubernetes 要求 Ingress 资源中spec的path字段中必须带有前缀 /。为同时兼容两者的要求,因此在spec的 path 字段中正则表达式写为 /~gateway(/|$)(.*) 的形式,实际上生效的字段为 ~gateway(/|$)(.*)。详情请参见 创建转发规则。​
ALB 基础版​
匹配规则​
当对接 ALB 基础版时,支持基于正则表达式的匹配和替换,基本规则如下:​
  • Host 一致性:Annotation 中的 host 必须与 spec 中的 host 完全一致。​
  • Path 格式处理​
  • 若 spec 中的 path 为静态路径(如 /demo),则 Annotation 中的 path 直接填写相同值 /demo。​
  • 若 spec 中的 path 为正则表达式(如 /~/(.*)),则 Annotation 中的 path 需要去掉开头的 /,修改为 ~/(.*)。​
  • URI 重写规则​
  • 静态路径:直接填写目标路径,例如 /aaa。​
  • 动态路径​
  • 允许在 Ingress 的path中填写一个或多个正则表达式,同时支持填写多个变量()。然后在 rewriteURI 中通过 ${1}、${2} 或 ${3} 获取一个或多个变量,最多支持获取三个变量。​
  • 支持基于正则表达式匹配的结果作为参数自由组合,拼接出您想要的重写规则。​
  • 通过正则表达式替换的逻辑为:客户端的请求匹配到正则表达式,正则表达式中有多个(),且rewriteURI注解中含有变量 ${1}、${2}和 ${3}中的一个或多个。​
说明​
例如:当您在 Annotation 中将 path 配置为 ~gateway/(.*)/(.*)/aaa,rewriteURI 配置为 /${1}/${2} 时。如果客户端发送请求的路径为 /gateway/ccc/bbb/aaa,则 path 会匹配到 ~gateway/(.*)/(.*)/aaa,rewriteURI 会把 ${1} 替换为 ccc,${2} 替换为 bbb,最终后端服务器接收到的请求路径为 /ccc/bbb。​
匹配示例​
ALB 基础版的配置示例,如下所示:​
​
apiVersion: networking.k8s.io/v1​
kind: Ingress​
metadata:​
name: alb-ingress # 自定义路由规则名称​
namespace: default # 路由规则所属的命名空间​
annotations:​
ingress.vke.volcengine.com/loadbalancer-rules-configs-rewrite: |​
[​
{​
"host": "example.com",​
"path": "~gateway(/|$)(.*)",​
"rewriteURI": "/${2}"​
}​
]​
spec:​
ingressClassName: alb # ALBInstance 的资源名称​
rules:​
- host: example.com​
http:​
paths:​
- pathType: Prefix​
path: /~gateway(/|$)(.*)​
backend:​
service:​
name: service-demo​
port:​
number: 80​
​
说明​
由于 ALB 产品中规定正则表达式必须以~开头,同时 Kubernetes 要求 Ingress 资源中spec的path字段中必须带有前缀 /。为同时兼容两者的要求,因此在spec的 path 字段中正则表达式写为 /~gateway(/|$)(.*) 的形式,实际上生效的字段为 ~gateway(/|$)(.*)。详情请参见 创建转发规则。​
​
最近更新时间:2026.04.07 14:19:46
这个页面对您有帮助吗?
有用
有用
无用
无用