为什么Kong可访问未配置的路由?如何禁止此类上游请求?
原因说明
出现该现象是Kong的默认路由匹配规则导致的:
Kong v2.x版本的路由默认采用前缀匹配逻辑,只要请求路径以你配置的路由路径为前缀,就会命中对应路由并转发完整请求路径到上游服务。你配置的前两个路由的路径/v1/country、/v1/country/{country_code}/brands都是第三个接口路径的前缀,因此第三个接口的请求会自动命中前面配置的已有路由,不需要单独配置路由规则即可被转发到上游。
禁止未配置API访问的解决方案
可以通过以下任意一种或多种组合方案实现管控:
- 开启路由精确匹配
给已配置的路由添加strict_path: true参数,同时将路径改写为带结尾标识符的正则格式,确保只有完全匹配路径规则的请求才能命中路由:- 匹配
GET /v1/country的路由路径改为~/v1/country$ - 匹配
GET /v1/country/{country_code}/brands的路由路径改为~/v1/country/[A-Za-z0-9]+/brands$
- 匹配
- 配置兜底拦截路由
新增一个优先级最低的兜底路由,绑定Host头为example.com,路径匹配规则为/,配置该路由直接返回403或404响应,所有未命中你提前配置的业务路由的请求都会被该兜底路由拦截,不会转发到上游。 - 调整路由匹配优先级
将路径更精确的路由的regex_priority参数设置为更高的数值,确保长路径的路由优先被匹配,避免短路径前缀路由提前命中长路径请求。
内容的提问来源于stack exchange,提问作者aditya khot
相关产品推荐
相关产品推荐

