Windows 上的 Dockererized Kong 给出“从上游服务器收到无效响应”

2023-12-19

请帮助我,因为我在使用 Dockerized Kong 从 REST 端点获取数据时收到“从上游服务器收到无效响应”错误。

我尝试使用 Kong 访问的 REST 服务正在我的本地主机上运行。

Kong请求添加API:

 curl -i -X POST \
--url http://localhost:8001/apis/ \
--data 'name=ping' \
--data 'upstream_url=http://localhost:8080/v1/employee/ping' \
--data 'hosts=localhost'

通过 Kong 转发请求:

curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host:localhost'

我通过 Kong 转发请求时遇到错误:

[root@c1c865250782 etc]# curl -i -X GET --url http://localhost:8000/ --
header 'Host:localhost'
HTTP/1.1 502 Bad Gateway
Date: Fri, 29 Dec 2017 08:53:40 GMT
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: kong/0.11.2

An invalid response was received from the upstream server

请帮我解决这个问题。

谢谢, 卡迈勒


我认为您遇到了刚开始使用 Docker 时遇到的经典 IP/主机问题。这里的关键是你必须注意让你的 dockerized Kong 能够到达你的localhost 从 docker 容器内部。这里的问题(最有可能)是 Kong(在 docker 内部)尝试访问http://localhost:8080。但对于 Kong 来说,这就是它本身运行的容器。

要进行此类测试,您必须找到本地计算机的 IP 地址并将其添加为upstream_url。根据您的计算机所在的位置,在家庭网络中还是在公司网络中,这将类似于10.x.y.z, or 192.168.x.y。命令ifconfig(macOS) 或ipconfig(Windows) 将帮助您找到该地址。通过使用此 IP,Kong 现在将能够解析本地计算机的端口 8080,而不是转到其自己的端口 8080。

请注意,这意味着您每次更改机器的 IP 地址时都需要在 Kong 中重新配置 API。根据它是否是笔记本电脑,或者您是否使用 DHCP 等,这种情况或多或少会发生。


tl;dr: 上游 URL 必须是一个能够让 Kong 解析目标的 URL从 Docker 容器内部看到.


Update:您可以使用host.docker.internal如果您使用 Docker 桌面 https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host。假设使用 Windows 或 macOS,这将开箱即用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 上的 Dockererized Kong 给出“从上游服务器收到无效响应” 的相关文章

随机推荐