java - Dockereriseret Kong på Windows giver 'Et ugyldigt svar blev modtaget fra upstream serveren'

Indlæg af Hanne Mølgaard Plasc

Problem



Vær venlig at hjælpe mig, da jeg får 'Et ugyldigt svar blev modtaget fra opstrømsserveren' -fejlen for at få dataene fra REST-slutpunkt ved hjælp af Dockerized Kong.


REST service, som jeg forsøger at få adgang til ved hjælp af Kong, kører på mit lokalehost.


Kong Forespørgsel om at tilføje 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'


Videresend anmodning via Kong:


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


Fejl, jeg får ved fremsendelse af anmodningen via 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


Hjælp mig venligst med at løse dette problem.


Tak,
Kamal

Bedste reference


Jeg tror, ​​at du kører ind i det klassiske IP/Host-problem, du får, når du starter med Docker. Nøglen her er, at du skal være opmærksom på at gøre din dockerized Kong i stand til at nå dine localhost fra inde i dockerbeholderen . Problemet her er (mest sandsynligt), at Kong (inside docker) forsøger at få adgang til http://localhost:8080. Men for Kong, er det beholderen, der kører på sig selv.


For at gøre denne type test skal du finde din lokale maskinens IP-adresse og tilføje den som upstream\_url. Afhængigt af hvor din maskine er, i et hjemmenetværk eller i et firmanetværk, vil det være noget som 10.x.y.z eller 192.168.x.y. Kommandoen ifconfig (macOS) eller ipconfig (Windows) hjælper dig med at finde den pågældende adresse. Ved at bruge denne IP i stedet vil Kong nu kunne løse din lokale computer s port 8080, i stedet for at gå til sin egen port 8080.


Bemærk, at det betyder, at du skal omkonfigurere API'en i Kong hver gang du ændrer IP-adresse på din maskine. Afhængigt af om det er en bærbar computer, eller hvis du bruger DHCP eller sådan, vil dette være mere eller mindre ofte.





tl; dr: Opstrømsadressen skal være en webadresse, der gør det muligt for Kong at løse målet som set indefra Dockerbeholderen .