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

容器服务

复制全文
下载 pdf
自定义转发规则配置示例
配置基于查询字符串的流量转发
复制全文
下载 pdf
配置基于查询字符串的流量转发
ALB Ingress 在对接 ALB 标准版时,支持配置基于查询字符串(Query String)的流量分发策略,支持通过不同的查询字符串来确定转发的后端 Service。​
注意​
配置 ALB Ingress 前,请务必仔细阅读 ALB Ingress 使用注意事项。​
背景信息​
查询字符串是 URL 中?之后的部分,常用来向服务器传递键值对形式的请求参数。其格式为键=值,允许包含多个参数,多参数之间用&分隔,例如https://example.com/search?keyword=k8s&page=1中,keyword=k8s和page=1就是查询字符串。​
查询字符串常用在 GET 请求中,用于传递非敏感数据,比如搜索关键词、分页信息等。因参数暴露在 URL 中,因此不适合传输密码等隐私内容。对于特殊字符(如空格、中文)需经 URL 编码(例如:空格编码后为%20),避免解析错误。​
前提条件​
  • 已安装 alb-ingress-controller 组件,并升级至 v0.37.1 及以上版本。详情请参见 升级组件。​
使用限制​
仅在 ALB Ingress 对接 ALB 标准版实例时,支持该配置。更多详情,请参见 ALB 实例类型概述。​
操作步骤​
通过控制台配置​
  1. 单击左侧导航栏中的 集群。​
  1. 在集群列表页面,单击需要配置路由规则的目标集群。​
  1. 在集群管理页面的左侧导航栏中,选择 服务与路由 > 路由规则,单击 创建路由规则。​
  • 在 Ingress 类型 配置项中,选择 应用型负载均衡 ALB。​
  • 在 转发规则 配置项中,勾选 启用,开启自定义转发规则,并配置转发规则详情。​
​​​
​
配置项​
说明​
转发条件​
配置基于域名和路径的转发条件,并增加 查询字符串 转发条件,表示基于 HTTP 查询字符串进行流量转发。​
  • 转发条件允许单独配置,也可以组合配置。当配置多个转发条件组合时,这些转发条件之间是 且 的关系。例如,假设您在一条转发规则中同时配置了域名和路径,只有同时匹配指定域名和路径的请求,才会匹配这条转发规则。​
  • 同一转发条件下允许配置多个值,这些值之间是 或 的关系。例如,假设您在查询字符串转发条件下配置了多个字符串,当请求匹配其中任何一个查询字符串时,即满足该转发条件。​
转发动作​
配置转发动作,本例中选择 转发至,即将请求转发到的目标服务和端口。​
​
  1. 单击 确定,完成配置。​
通过 kubectl 命令行配置​
ALB Ingress 支持通过 Annotation 配置基于查询字符串的转发策略。示例和注解说明如下:​
  • 注解中的{{service-name}}字段必须与spec.rules中配置的后端服务名称对应一致,例如在本例中,正确的注解为ingress.vke.volcengine.com/loadbalancer-conditions.service-demo。​
  • 注解中配置的QueryString会和spec.rules中的host合并。例如在本例中,转发规则合并后,host为example.com,查询字符串为key1:value1的请求,均会转发到service-demo服务中。​
​
apiVersion: networking.k8s.io/v1​
kind: Ingress​
metadata:​
name: alb-ingress # 自定义路由规则名称​
namespace: default # 路由规则所属的命名空间​
annotations:​
ingress.vke.volcengine.com/loadbalancer-conditions.{{service-name}}: | # {{service-name}} 需要替换为服务的名称​
[​
{​
"type": "QueryString",​
"queryStringConfig": {​
"values": [​
{​
"key": "key1",​
"value": "value1"​
},​
{​
"key": "key2",​
"value": "value2"​
}​
]​
}​
}​
]​
spec:​
ingressClassName: alb # ALBInstance 的资源名称​
rules:​
- host: example.com​
http:​
paths:​
- pathType: Prefix​
path: /demo # 请求匹配的路径​
backend:​
service:​
name: service-demo # 需要对接的服务名称​
port:​
number: 80 # 需要对接服务的端口号​
​
ingress.vke.volcengine.com/loadbalancer-conditions.{{service-name}}注解中的参数说明如下表所示。​
​
字段​
类型​
描述​
默认值​
type​
String​
负载均衡转发策略配置类型,本文中为Method,表示配置基于请求方法的转发策略。​
无​
queryStringConfig.values​
Array of value​
转发策略中的查询字符串。查询字符串为键值对形式,需要配置具体的键和值。​
无​
​
value​
​
字段​
类型​
描述​
默认值​
key​
String​
查询字符串的键。​
无​
value​
String​
查询字符串的值。​
无​
​
结果验证​
查看配置​
  1. 单击左侧导航栏中 实例管理,在实例列表中选择目标 ALB 实例,在 操作 栏中单击 配置监听器。​
  1. 在 监听器 页面中,选择目标监听器,在 操作 栏中单击 编辑转发规则,查看当前监听器的转发规则。确认查询字符串与配置的一致。​
  • ​​​
访问验证​
说明​
验证功能前,您需要在集群中部署后端应用和服务。本例中以 nginx 镜像,服务提供路径为/demo为例。部署操作方式,请参考 使用 ALB Ingress 实现业务发布。​
  1. 使用 ALB Ingress 中配置的域名访问服务。其中14.***.***.***为 ALB 公网 IP 地址。​
  • ​
    curl -H "Host: example.com/demo" http://14.***.***.***​
    ​
  • 预期结果如下,由于访问时未提供查询字符串,无法正确访问到后端服务。​
  • ​
    <html>​
    <head><title>503 Service Temporarily Unavailable</title></head>​
    <body bgcolor="white">​
    <center><h1>503 Service Temporarily Unavailable</h1></center>​
    </body>​
    </html>​
    ​
  1. 再次使用以下命令,使用允许的 HTTP 请求方法访问服务。​
  • ​
    curl -H "Host: example.com/demo?key1=value1" http://14.***.***.***​
    ​
  • 预期结果如下,由于访问时提供了对应的查询字符串,满足转发规则要求,可以正确访问到后端服务。​
  • ​
    <!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>​
    ​
最近更新时间:2026.04.07 14:19:46
这个页面对您有帮助吗?
有用
有用
无用
无用