我正面临Kong的问题,我完全按照Kong文档的5分钟快速入门创建了我的服务和路线,但是我只更改了一些参数以使用我自己的在localhost:3000上运行的api来设置服务。
所以有我的设置:
我做了什么来创建我的服务。
我使用参数创建了服务:
{
"name": "users",
"url": "http://localhost:3000",
"host": "127.0.0.1"
}
然后我用主体创建了路线:
{
"hosts": [ "127.0.0.1"],
"methods": ["GET"],
"paths": ["/"],
"name": "users"
}
然后我尝试了是否一切都在http://localhost:8080/users中使用标题: “主机:127.0.0.1”
我得到了答复:
502错误的网关:从上游收到无效的响应 服务器
2019/03/04 09:28:36 [错误] 36#0:* 63824 connect()失败(111: 连接到上游,客户端:172.18.0.1,但连接被拒绝), 服务器:kong,请求:“ GET / users HTTP / 1.1”,上游: “ http://127.0.0.1:3000/users”,主持人:“ 127.0.0.1”
因此我们可以看到Kong尝试访问良好的终结点'127.0.0.1:3000/,但无法访问它。
也许Kong试图访问的是自己的容器localhost,但我不知道,我也不知道如何解决它,也许您可以帮助我!
答案 0 :(得分:0)
您确实已将Kong配置为访问其自己的容器。为了访问在您的实际计算机上运行的服务(此处假定为Windows或macOS),您可以将服务指向http://host.docker.internal:3000
。另外,在正确连接之前,我将忽略host
属性,然后再次添加限制。
另请参阅以下问题:Dockererized Kong on windows giving "An invalid response was received from the upstream server"
在容器中运行的Kong就像是拥有自己的小VM(不要打我,我知道这不是真的,但是从网络的角度来看,这是可行的),而localhost
for Kong是就是那个容器。到Kong的容器的主机是单独的主机。