简体   繁体   中英

Mulitple Docker Containers on Port 80 with Same Domain

My question is similar to this question but with only one domain.

Is it possible to run multiple docker containers on the same server, all of them on port 80, but with different URL paths?

For example:

Internally, all applications are hosted on the same docker server.

172.17.0.1:8080 => app1
172.17.0.2:8080 => app2
172.17.0.3:8080 => app3

Externally, users will access the applications with the following URLs:

www.mydomain.com                 (app1)
www.mydomain.com/app/app2        (app2)
www.mydomain.com/app/app3        (app3)

I solved this issue with an nginx reverse proxy.

Here's the Dockerfile for the nginx container:

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

And this is the nginx.conf :

http {

        server {
              listen 80;

              location / {
                proxy_pass http://app1:5001/;
              }

              location /api/ {
                proxy_pass http://app2:5000/api/;
              }
        }
}

I then stood up the nginx, app1, and app2 containers inside the same docker network.

Make sure to include the trailing / in the location and proxy paths, otherwise nginx will return a '502: Bad Gateway'.

All requests go through the docker host on port 80, which hands them off to the nginx container, which then forwards them onto the app containers based on the url path.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM