Kam*_*rma 2 java windows docker kong
请在使用Dockerized Kong从REST端点获取数据时收到“从上游服务器收到无效响应”错误消息,请为我提供帮助。
我试图使用Kong访问的REST服务正在本地主机上运行。
要求添加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'
Run Code Online (Sandbox Code Playgroud)
通过Kong转发请求:
curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host:localhost'
Run Code Online (Sandbox Code Playgroud)
我通过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
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题。
谢谢,卡玛尔
我认为您开始使用Docker时遇到的经典IP /主机问题。这里的关键是您必须注意使您被docker化的Kong能够localhost 从 docker 容器中到达您。这里的问题是(最有可能)是Kong(在docker内部)试图访问http://localhost:8080。但是对于Kong来说,这就是它自己运行的容器。
要进行这种测试,您将必须找到本地计算机的IP地址并将其添加为upstream_url。根据计算机的位置,在家庭网络中还是在公司网络中,将类似于10.x.y.z或192.168.x.y。命令ifconfig(macOS)或ipconfig(Windows)将帮助您找到该地址。通过使用此IP,Kong现在将能够解析本地计算机的端口8080,而不用转到其自己的端口8080。
请注意,这意味着您每次更改计算机的IP地址时都需要在Kong中重新配置API。根据是笔记本电脑,还是使用DHCP或类似的设备,这种情况或多或少会经常发生。
tl; dr:上游URL必须是使Kong能够解析从Docker容器内部看到的目标的URL 。
| 归档时间: |
|
| 查看次数: |
2470 次 |
| 最近记录: |