Howto debug when nginx gives 502 bad gateway?

14,887

try this:

upstream my_server {
   server 172.17.0.2:10000;
}

server {
   listen 80;
   server_name landing.example.com;
   location / {
      proxy_pass                  http://my_server;
      proxy_set_header            Host $host;
      proxy_set_header            X-Real-IP $remote_addr;
      proxy_http_version          1.1;
      proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header            X-Forwarded-Proto http;
      proxy_redirect              http:// $scheme://;
   }
}

Here you define the upstream server (your server by IP or hostname) and make sure to forward the headers too so the server answering knowns who to answer to.

Share:
14,887
Jasmine Lognnes
Author by

Jasmine Lognnes

Updated on June 25, 2022

Comments

  • Jasmine Lognnes
    Jasmine Lognnes almost 2 years

    On landing.example.com:10000 have I a webserver that works fine, which is a Docker container that exposes port 10000. Its IP is 172.17.0.2.

    What I would like is having a nginx reverse proxy on port 80, and send the visitor to different Docker containers depending on the URL they visit.

    server {
        listen 80;
        server_name landing.example.com;
    
        location / {
            proxy_pass http://172.17.0.2:10000/;
        }
    
        access_log /landing-access.log;
        error_log  /landing-error.log info;
    }
    

    When I do this, I get 502 Bad Gateway and the log says

    2016/04/14 16:58:16 [error] 413#413: *84 connect()
    failed (111: Connection refused) while connecting to upstream, client:
    xxx.xxx.xxx.xxx, server: landing.example.com, request: "GET / HTTP/1.1",
    upstream: "http://172.17.0.2:10000/", host: "landing.example.com"
    
  • Kirby
    Kirby over 2 years
    Is it possible to perform POST requests without data lost?