问题标签 [krakend]

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.

0 投票
0 回答
24 浏览

go - 在 KrakenD 中使用自定义 Http 处理程序(Go 插件)时出现 401 未经授权的错误

我正在尝试通过使用 go lang 在 KrakneD 中添加自定义逻辑来构建 http 插件。但目前我从 KrakenD 收到 500 个内部服务器错误,在后端收到 401 个未经授权的错误。当我调试更多时,我可以看到不记名令牌没有传递到后端。

KrakenD 后端配置:

Go Lang 插件

0 投票
1 回答
70 浏览

lua - 使用 lua 在 Krakrnd 中转换请求数据

使用 Krakend 作为 api 网关。

我在 krakend.json 中配置了一个端点:

endpont "/api/v1/get_client_id" 只接收一个参数:

我想要,我的端点“/ call”接收的lua脚本:

并在发送前进行转换:

我尝试使用 gsub,但使用 body() 作为“字符串”效率不高。

是一种将“req”解析为表格、字典或我可以转换数据的东西的方法吗?

是另一种转换请求数据的方法吗?

使用 GSUB 的示例:

控制台输出:

正如我们所见,gsub 效率不高,因为替换了所有字符串。如果我可以将 req 用作 table、dict 或类似的东西,我可以替换 dict 键/值。例如: req['xxx] = 'xxx' 或迭代 req.keys

0 投票
0 回答
60 浏览

lua - krakend 的 Lua 脚本

我编写了一个简单的 krakend.json 配置来配置我的端点。此配置调用 Lua 脚本,目前它仅打印正文响应。

调用的 Lua 函数是:

目前打印正文工作正常,我可以看到所有的 json 响应。但是在我的邮递员请求中,我看到一个空的正文响应。我只使用 Lua 函数来检查正文响应是否包含字符串“error”

我的主要问题是为什么在日志上我可以在邮递员中看到身体反应,而不是我的身体是空的?

0 投票
1 回答
30 浏览

openssl - 添加 TLS 支持时,Kraken API 网关容器崩溃

每当我将 TLS 密钥添加到配置文件时,我的 Kraken(版本 2)部署都会崩溃。

第 1 步:我使用 OpenSSL 生成了一个公钥和私钥对。

第 2 步:我在容器中启动了 KrakenD,并安装了以下卷 /etc/krakend/run/desktop/mnt/host/c/apitest/conf

容器不会崩溃

第 3 步:我关闭容器并将以下内容添加到我的 kraken 配置文件中。

当我重新启动容器时,容器会崩溃。我已经检查过容器是否可以从该位置读取(毕竟它正在读取配置文件)。我使用 JSONLint.com 验证了我的 JSON 文件,它是有效的。

kubectl logs...显示此错误:“2022/02/15 16:06:51 错误:[tls:跳过以下类型的 PEM 块后,在证书输入中找不到“CERTIFICATE”PEM 块:[PUBLIC KEY]]”

为什么会崩溃?我不知道如何从这里调试它。

我应该使用私钥还是应该使用从私钥生成的自签名证书?

0 投票
0 回答
28 浏览

go - Krakend http:关闭正文上的无效读取

我正在使用 Krakend 构建一个 API 网关来连接三个后端服务。网关总是从一个或两个后端服务返回,并且X-Krakend-Completed header总是设置为 false。

http: invalid Read on closed Body日志中的错误可能是什么原因?

预期行为

GET localhost:8000

回复

实际行为

GET localhost:8000

回复

海妖日志

服务1

服务 2

服务 3

Krakend.json

0 投票
0 回答
4 浏览

linux - 如何使用 KrakenD 禁止访问本地主机请求的某些端点?

我有两个端点,我希望它们中的一个只能被来自本地主机的请求访问。另一个应该接收来自任何地方的请求。在文档的安全部分中,我找到了下一个配置:

但这只是在根级别。此外,这包括端口,我需要过滤条件:“来自本地主机?”

有没有办法可以满足这个要求?无论是使用 KrakenD、IPTables 等...