Dockererized Kong在Windows上显示“从上游服务器收到无效响应”

时间:2017-12-29 09:26:19

标签: java windows docker kong

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

我尝试使用Kong访问的REST服务正在我的localhost上运行。

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'

通过孔转发请求:

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

请帮我解决这个问题。

谢谢, 哈拉

1 个答案:

答案 0 :(得分:3)

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

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

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

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