Search code examples
nginxdockerreverse-proxy

nginx proxy_pass to a linked docker container


I have two docker containers with nginx. container1 is linked to container2. Docker then adds an entry to /etc/hosts which I entered into the nginx configuration like so:

server {
    location ~ ^/some_url/(.*)$ {
        proxy_pass http://container1/$1;
    }
}

I can ping container1 from container2, but nginx cannot resolve it:

*1 no resolver defined to resolve container1

How can I proxy_pass a request to another docker container?


Solution

  • Use an upstream block instead of the container name directly

    upstream backend {
        server container1;
    }
    server {
        location ~ ^/some_url/(.*)$ {
            proxy_pass http://backend/$1;
        }
    }
    

    This should allow normal name resolution to occur providing a way to easily use docker links with nginx.