java - Dockererized Kong 在 Windows 上给出 "An invalid response was received from the upstream server"

标签 java windows docker kong

请帮助我,因为我在使用 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.z192.168.x.y。命令 ifconfig (macOS) 或 ipconfig (Windows) 将帮助您找到该地址。通过使用此 IP,Kong 现在可以解析您本地计算机的端口 8080,而不是转到它自己的端口 8080。

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


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

关于java - Dockererized Kong 在 Windows 上给出 "An invalid response was received from the upstream server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48020283/

相关文章:

c - 可执行路径

linux - 无法在正在运行的 Docker 容器中 ssh localhost

java - 如何为另一个 Activity 保存一个 int ?

java - 更新到7.7.0后,ElasticSearch在MacOS上不起作用

windows - .exe 文件大小是否会影响其图标是否显示?

c# - Windows 资源管理器 Crumb-Bar 控件

git - 如何导入导出docker compose?

php - 使用docker-compose中的docker远程解释器在Intellij中运行PHPUnit期望 “/opt/project”中的项目

java - JNI 调用静态方法。类对象是必需的吗?

java - 屏幕撕裂JPanel游戏和双缓冲