Kong,502 本地主机服务的网关错误

Bro*_*tch 4 kong

我遇到了 Kong 的问题,我创建了我的服务和路线,与 Kong 文档的 5 分钟快速入门完全相同,但我只更改了一些参数,以使用我自己在 localhost:3000 上工作的 api 设置服务。

所以这是我的设置:

  • Kong在docker上运行(Docker与我的服务在同一台机器上运行)
  • http://localhost:3000/users这是我的服务总是返回 JSON {"status": "OK"}

这就是我为创建我的服务所做的事情。

我使用参数创建了我的服务:

{
    "name": "users",
    "url": "http://localhost:3000",
    "host": "127.0.0.1"
}
Run Code Online (Sandbox Code Playgroud)

然后我用 body 创建了路线:

{
    "hosts": [ "127.0.0.1"],
    "methods": ["GET"],
    "paths": ["/"],
    "name": "users"
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试是否一切都与http://localhost:8080/users一起使用,标题为:“Host:127.0.0.1”

我得到了回复:

502 Bad Gateway:从上游服务器收到无效响应

docker 的日志(托管 kong 的日志):

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 尝试访问的是自己的容器本地主机,但我不知道,而且我不知道如何修复它,也许你可以帮助我!

don*_*tin 8

您确实已将 Kong 配置为访问其自己的容器。为了访问在您的实际计算机(我假设是 Windows 或 macOS)上运行的服务,您可以将该服务指向http://host.docker.internal:3000。此外,我会忽略这些host属性,直到您正确连接,然后再次添加限制。

另请参阅这个问题:Windows 上的 Dockererized Kong 给出“从上游服务器收到无效响应”

Kong 在容器中运行就像它有自己的小虚拟机(别打我,我知道这不太正确,但从网络角度来看,这是可行的),而localhost对 Kong 来说就是容器。容器的主机对于 Kong 来说是一个单独的主机。