如何在Kong无DB模式下配置基于请求头的组合路由规则?
Kong无数据库(db-less)模式下基于请求头的路由配置
直接用Kong的db-less配置文件(通常是kong.yml)就能实现,核心是利用路由的headers数组来实现逻辑或的匹配条件,满足name=jack或gender=man的请求都会被路由到目标服务。
完整配置示例
把下面内容保存为kong.yml,替换其中的服务地址为你的实际业务地址:
# 定义要路由到的目标服务 services: - name: my-target-service url: http://your-real-service:8080 # 定义匹配规则的路由 routes: - name: header-match-route service: my-target-service # 核心:数组里的每个对象是一个独立匹配条件,满足任意一个就触发路由 headers: - name: ["jack"] - gender: ["man"] # 根据实际业务需求设置允许的请求方法,这里列常用类型 methods: ["GET", "POST", "PUT", "DELETE"] # 支持的协议,按需调整 protocols: ["http", "https"] # 如果需要忽略请求头名称和值的大小写,加上这行 # ignore_case: true
应用配置的方式
- 启动Kong时加载配置:
kong start -c kong.yml --db-less
- 给已运行的Kong实例重载配置:
curl -X POST http://kong-admin:8001/config -F config=@kong.yml
关键注意点
headers用数组形式时,数组内的每个头规则是或的关系;如果写成单个对象(比如headers: {name: ["jack"], gender: ["man"]}),就变成且的关系,必须同时满足两个头条件才会匹配,这点要区分清楚。- 头的值是数组格式,支持同时匹配多个值,比如
name: ["jack", "jake"]就会匹配name=jack或name=jake的请求。
内容的提问来源于stack exchange,提问作者x-dog
相关产品推荐
相关产品推荐

