问题标签 [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.
go - 在 KrakenD 中使用自定义 Http 处理程序(Go 插件)时出现 401 未经授权的错误
我正在尝试通过使用 go lang 在 KrakneD 中添加自定义逻辑来构建 http 插件。但目前我从 KrakenD 收到 500 个内部服务器错误,在后端收到 401 个未经授权的错误。当我调试更多时,我可以看到不记名令牌没有传递到后端。
KrakenD 后端配置:
Go Lang 插件
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
lua - krakend 的 Lua 脚本
我编写了一个简单的 krakend.json 配置来配置我的端点。此配置调用 Lua 脚本,目前它仅打印正文响应。
调用的 Lua 函数是:
目前打印正文工作正常,我可以看到所有的 json 响应。但是在我的邮递员请求中,我看到一个空的正文响应。我只使用 Lua 函数来检查正文响应是否包含字符串“error”
我的主要问题是为什么在日志上我可以在邮递员中看到身体反应,而不是我的身体是空的?
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]]”
为什么会崩溃?我不知道如何从这里调试它。
我应该使用私钥还是应该使用从私钥生成的自签名证书?
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
linux - 如何使用 KrakenD 禁止访问本地主机请求的某些端点?
我有两个端点,我希望它们中的一个只能被来自本地主机的请求访问。另一个应该接收来自任何地方的请求。在文档的安全部分中,我找到了下一个配置:
但这只是在根级别。此外,这包括端口,我需要过滤条件:“来自本地主机?”
有没有办法可以满足这个要求?无论是使用 KrakenD、IPTables 等...