sty*_*yko 2 api node.js krakend
我的本地计算机上有一台正在运行的 Nodejs 服务器(带有一个 API)。
\n我已经使用 krakend 创建了新的 docker 容器
\ndocker run -p 8080:8080 -v $PWD:/etc/krakend/ devopsfaith/krakend run --config /etc/krakend/krakend.json \nRun Code Online (Sandbox Code Playgroud)\n虽然,我必须对上面的命令进行一些更改,因为我在 Windows 上工作。
\n我创建了一个 krakend.json 文件,它的内容是
\n{\n "version": 3,\n "timeout": "3s",\n "cache_ttl": "300s",\n "port": 8080,\n "default_hosts": ["http://localhost:3001"],\n "endpoints": [\n {\n "endpoint": "/contacts",\n "output_encoding": "json",\n "extra_config": {\n "qos/ratelimit/router": {\n "max_rate": 5000\n }\n },\n "backend": [\n {\n "host": [\n "http://localhost:3001", \n "http://cotacts:3001"\n ],\n "url_pattern": "/contacts",\n "is_collection": "true",\n "encoding": "json",\n "extra_config": {\n "backend/http": {\n "return_error_details": "backend_alias"\n }\n }\n }\n ]\n }\n ]\n}\n\nRun Code Online (Sandbox Code Playgroud)\n但是当我使用邮递员点击网址时,http://localhost:8080/contacts我得到了
[KRAKEND] 2022/03/14 - 07:26:30.305 \xe2\x96\xb6 ERROR [ENDPOINT: /contacts] Get "http://localhost:3001/contacts": dial tcp 127.0.0.1:3001: connect: connection refused\nRun Code Online (Sandbox Code Playgroud)\n我在这里找到了相关的\n Krakend api-gateway 连接被拒绝错误?
\n但是,我没有得到什么改变我的情况
\n在里面backend你有两个hosts负载均衡器。KrakenD 将以循环方式尝试其中之一。
"host": [
"http://localhost:3001",
"http://cotacts:3001"
],
Run Code Online (Sandbox Code Playgroud)
如果您按照消息中所写的那样启动了 KrakenD,则这两个名称都不可用。
localhost是 KrakenD 本身(不是启动 KrakenD 的主机)。KrakenD 没有任何端口3001,因此预计无法连接。你应该写你的主机IP。cotacts:3001是一些外部服务。如果您需要按名称访问此服务,则需要通过 docker compose 使用它。您遇到的问题是 Docker 连接性,与 KrakenD 无关。KrakenD 只是抱怨它无法连接到这些服务。
最后,是"default_hosts"KrakenD中不存在的东西,它对配置没有影响,你可以删除该行。如果您想拥有一个默认主机而不需要在每个后端中声明它,只需使用host. 总之,您的配置应如下所示:
{
"$schema": "https://www.krakend.io/schema/v3.json",
"version": 3,
"timeout": "3s",
"cache_ttl": "300s",
"port": 8080,
"host": [
"http://1.2.3.4:3001"
],
"endpoints": [
{
"endpoint": "/contacts",
"extra_config": {
"qos/ratelimit/router": {
"max_rate": 5000
}
},
"backend": [
{
"url_pattern": "/contacts",
"is_collection": "true",
"extra_config": {
"backend/http": {
"return_error_details": "backend_alias"
}
}
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
并替换1.2.3.4为运行 Node.js 的机器的 IP。
| 归档时间: |
|
| 查看次数: |
1781 次 |
| 最近记录: |