skip to Main Content

I just made a fresh Ubuntu desktop vm, threw docker on it, threw Nginx on it, and pulled and ran the container yeasy/simple-web:latest, and ran it twice with the commands

docker run --rm -it -p 8000:80 yeasy/simple-web:latest

docker run --rm -it -p 8001:80 yeasy/simple-web:latest

I went over to /etc/nginx/sites-available and created a new file localhost.conf with the contents

server {
  listen      80;

  location /chad {
    proxy_pass  http://127.0.0.1:8000/;
  }

  location /brock {
    proxy_pass  http://127.0.0.1:8081/;
  }
}

I then created a symlink of the localhost.conf file at /etc/nginx/sites-enabled with the command

ln -s ../sites-available/localhost.conf .

This was all done as root.

When I curl localhost:8000 and localhost:8001 I get the correct webpage hosted in the docker container. When I curl localhost/chad or localhost/brock, I get an Nginx 404 error. I have not touched the default config for Nginx, and did not modify the Docker images

I am limited to using docker images and Nginx, so I cannot change technology stacks.

2

Answers


  1. Chosen as BEST ANSWER

    I ended up being able to host both my docker containers with Nginx on the host machine with the following config following the above instructions.

    server {
        root /var/www/html;
    
        index index.html index.htm index.nginx-debian.html;
        listen 127.0.0.1;
        server_name localhost;
    
        location / {
            try_files $uri $uri/ =404;
        }
    
        location /chad {
            proxy_pass http://127.0.0.1:8000/;
        }
    
        location /brock {
            proxy_pass http://127.0.0.1:8001/;
        }
    }
    

  2. Not sure if you’re already doing this but it’s worth mentioning:

    You need to reload or restart Nginx whenever you make changes to its configuration.

    To reload Nginx, use one of the following commands:

    sudo systemctl reload nginx
    sudo service nginx reload 
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search