问题标签 [kong-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kong - 关于Kong中路由匹配原理的问题
我在使用Kong配置路由时遇到了一些问题,需要将登录认证插件应用到指定的api路径。
例如,
- 如果有一个名为 'Route1' 的 Route 并且它的路径是 '
/api/phone
', - 我想将认证插件应用到'
/api/phone/sell
'路径下的所有请求。所以我建立了一个名为'Route2'的路线,路径为:'/api/phone/sell
'。
但是当我真正调用它时,它与我的预期不同。
当我的请求路径是' /api/phone/sell
'时,匹配的路由是'Route1'。只有当我的请求路径是' /api/phone/sell/abc
'时,我才能匹配'Route2'。
这让我很困惑,因为我最近将我的kong版本从0.14.x升级到了1.3.x,之前的版本没有这个问题。是因为我没有正确理解路径匹配原理,还是在某个版本之后Kong有一些调整?
所有帮助表示赞赏!
api-gateway - 安装了 Deck 的 DockerCompose Kong
我正在研究使用Deck来Kong
执行同步迁移。但是,我似乎找不到Kong
使用docker-compose
.
有没有我可以遵循的指南/文档来执行这样的安装?
nginx - 从 ngx.shared.DICT 中删除过期密钥需要多长时间?
在我使用 ngx.shared.DICT 的 Kong(API 网关)插件之一中,密钥到期后会保留多长时间?
我已将共享字典的大小设置为 5mb,并且可以预期存储 600 个过期时间为 60 秒的密钥,每个密钥最多可以包含 20 个字符,这会在运行时引起任何问题吗?
PS:Kong 是建立在 Openresty 之上的。
lua - 使用 Pongo 为用 Lua 编写的自定义 Kong API 网关插件运行测试时如何生成和显示覆盖率
我正在 Lua 中编写一些 kong 自定义插件。我正在使用 Kong 2.3.3 和 Lua 5.1。
我有一些测试用例(单元测试+集成测试),我正在使用 pongo run -coverage 选项运行它们。我已经安装了 luacov(还有 cluacov,都安装了 luarocks)并且我的所有测试都通过了,但是没有使用覆盖数据生成 luacov 文件。我没有从 Docker 运行 pongo,我已经在我的本地机器(即 Linux Ubuntu 20.04)中安装并配置了它。
我已经尝试了以下几件事:
- 我的 .busted 文件设置 coverage = true、verbose = true 和 output = "gtest"(已经尝试过 utfTerminal、tap 和 json)
- 尝试将 luacov 作为依赖项添加到我的 rockspec 文件中......构建没有失败,但没有生成覆盖文件
- 我什至尝试在没有 pongo 的情况下运行测试,直接使用 busted 但这是一个非常糟糕的选择,因为我的 LUAPATH 中没有设置诸如 spec.helpers 或 cjson 库之类的东西
postgresql - Kong插件开发-将自定义实体插入数据存储区时出错(postgres)
我正在尝试编写自己的 Kong 插件,该插件需要存储一些自定义实体(如 api-key),但它失败了(无法插入到 postgres)并破坏了 http 请求。
这是我的插件:
架构.lua:
daos.lua:
迁移/000_base_myplugin.lua:
处理程序.lua:
但是当我提出请求时,没有数据插入数据存储区:
和http响应:
Kong 错误日志:
我错过了什么?提前致谢!<3
kong - 当 kong 节点收到请求时,kong 怎么知道要执行哪个插件?
我正在与 kong 合作,然后想了解 kong 将如何知道为刚刚到达网关的请求执行哪个插件。
假设我们已经在服务实体上配置了速率限制插件,并且有一个与之关联的路由,当请求到达该路由时,kong 现在如何知道它必须执行速率限制插件。
它基于插件配置吗?如果是这样,kong 是否会从数据库中提取此详细信息
请解释插件执行的机制。
PS:我知道执行顺序,但不知道 kong 如何决定执行哪个插件。
lua - 为什么 Kong API Gateway 在将请求转发到后端时会删除 X-Forwarded-For 标头?
我正在尝试将包含客户端 IP 地址的 X-Forwarded-For 标头转发到后端服务,但似乎 Kong 不允许这种情况发生,当我在 Kong 日志中记录客户端时,我可以读取客户端的 IP 地址但是,每次将 X-Forwarded-For 标头添加到后端请求中的尝试都失败了,有人知道这是为什么吗?
我的kong配置文件中有这个
lua - Kong如何检测连接超时?
目前,每当上游服务宕机时,kong 将抛出“{“message”:“failure to get a peer from the ring-balancer”}”
我正在尝试创建一个自定义插件来检测连接超时并向客户端返回自定义消息,我现在面临的阻止程序是在我的自定义插件中编写 lua 代码来检测超时。我试过使用
但这似乎也没有检测到超时。
有谁知道在编写自定义 kong 插件时我应该怎么做来检测连接超时?
kong - Kong 配置多个服务
我在同一个配置多个服务kong.yaml
。例如
当我向客户提出请求时,例如
默认情况下,它一直被代理到 service1 并出现以下错误:
从它提到的文档hosts
中,您可以向路由对象添加一个属性,并让客户端向标头中的主机发出请求(这有效)。例如
但是,我无法更改客户端发出请求的方式,因为这已经在生产中了。有没有一种方法可以代理请求,而无需更改客户端的请求以Host: <given host>
在标头中包含主机()?
另外,需要注意的是,如果我完全删除 service1,那么它可以工作,它默认为 service2 路由,而无需在请求的标头中包含额外的 Host。
kong - 查看 kong.singletons.cache 中有什么?(香港 0.11.0)
如何找出单例缓存中的内容?我试图找出为什么缓存永远不会被命中?它总是执行_M.introspect_access_token_req