带有localhost服务的502错误网关网关

时间:2019-03-04 10:57:02

标签: kong

我正面临Kong的问题,我完全按照Kong文档的5分钟快速入门创建了我的服务和路线,但是我只更改了一些参数以使用我自己的在localhost:3000上运行的api来设置服务。

所以有我的设置:

  • Kong在docker上运行(Docker与我的服务在同一台计算机上运行)
  • http://localhost:3000/users,这是我的服务,始终返回JSON {“状态”:“确定”}

我做了什么来创建我的服务。

我使用参数创建了服务:

{
    "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,但我不知道,我也不知道如何解决它,也许您可​​以帮助我!

1 个答案:

答案 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的容器的主机是单独的主机。