记录升级 KONG3.1 网关遇到的坑
记录升级 KONG3.1 网关遇到的坑
原始版本:2.1
升级版本:3.1.1
动态路由
- 默认使用插件
request-transformer
假如你有一个真实路由 /user/all
,现在需要网关做转发,前端请求路由为/web/v1/demo/user/login
原始版本你需要在 Konga 路由页面配置PATH
为/web/v3/demo/user/login$
,然后通过插件就能正常将接口转发到后端真实路由
升级版本你需要在 Konga 路由页面配置PATH
为~/web/v3/demo/user/login$
,然后才能通过插件就能正常将接口转发到后端真实路由
具体缘由如下:
路由参数(strip_path
)
可能需要指定路径前缀来匹配路由,但不要将其包含在上游请求中。为此,请strip_path
通过配置路由来使用布尔属性,如下所示:
1 |
|
启用此标志指示 Kong Gateway 在匹配此路由并继续代理服务时,不应在上游请求的 URL 中包含 URL 路径的匹配部分。比如下面客户端对上面路由的请求:
1 |
|
这会导致 Kong Gateway 发送以下上游请求:
1 |
|
同样,如果在已启用的路由上定义了 Regex 路径strip_path
,则整个请求 URL 匹配序列将被剥离。例如:
1 |
|
以下 HTTP 请求匹配提供的正则表达式路径:
1 |
|
由 Kong Gateway 在上游代理为:
1 |
|
- 举例说明
当你需要通过一个管理接口 /admin-api
通过代码去实现 Konga 管理功能的话,strip_path
参数需要设置为 True
当strip_path
设置为 False 时,通过代码获取虚拟主机信息时,Kong 接收到的请求为
1 |
|
这时会出现错误,错误详情为
1 |
|
当strip_path
设置为 True时,通过代码获取虚拟主机信息时,Kong 接收到的请求为
1 |
|
这时通过 Konga 管理接口转发到 Kong 网关时的真实请求路径会将 /admin-api
删除,可以正常请求
自定义插件
当你自定义插件后需要挂载到网关容器中,需要修改两个地方
1、docker-compose 文件
1 |
|
2、constants.lua文件
在 constants.lua
文件 plugins 处添加自定义的插件名称
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!