Kong, 502 Bad Gateway with localhost Service


#1

I am facing to an issue with Kong, i created my service and my route exactly like the 5min quickstart of the Kong’s documentation but i only change some parameters to setup the service with my own api working on localhost:3000.

So there is my setup:

  • Kong running on docker (Docker is running on the same machine than my service)
  • http://localhost:3000/users which is my service always returning JSON
    {“status”: “OK”}

there is what i did to create my service.

I created my service with parameters :

{
	"name": "users",
	"url": "http://localhost:3000",
	"host": "127.0.0.1"
}

then i created the Route with body:

{
	"hosts": [ "127.0.0.1"],
	"methods": ["GET"],
	"paths": ["/"],
	"name": "users"
}

then i tried if everything is working with http://localhost:8080/users with header:
“Host:127.0.0.1”

and i got the reply:

502 Bad Gateway : An invalid response was received from the upstream
server

The docker’s Logs (this one hosting kong) :

2019/03/04 09:28:36 [error] 36#0: *63824 connect() failed (111:
Connection refused) while connecting to upstream, client: 172.18.0.1,
server: kong, request: “GET /users HTTP/1.1”, upstream:
http://127.0.0.1:3000/users”, host: “127.0.0.1”

So we can see Kong trying to access the good endpoint ‘127.0.0.1:3000/’ but can’t access to it.

Maybe Kong trying to access is own container localhost but i don’t know, and i don’t know how to fix it, maybe you can help me!

Related Stackoverflow topic: https://stackoverflow.com/questions/54981810/kong-502-bad-gateway-with-localhost-service


#2

It definitely looks like your docker kong cannot access your upstream running on host machine’s localhost:3000. There are a variety of docker solutions to this problem. The docker forums provide some guidance (like https://forums.docker.com/t/accessing-host-machine-from-within-docker-container/14248/10 and https://forums.docker.com/t/how-to-access-the-host-machines-localhost-127-0-0-1-from-docker-container/40699).

Hope this helps.

Rob