https://www.digitalocean.com/community/questions/how-to-bind-multiple-domains-ports-80-and-443-to-docker-contained-applications
Cool nginx reserve proxy config explain:
The most basic way to expose a web app running in a Docker container to the outside is to bind port 80 in the container to port 80 on the host system:
docker run -d -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
Though when you are running multiple app that you can't have them all listen on the same port. One way to get around this would be to set up an Nginx reverse proxy in front of the containers.
For example, say you have two different app. Bind them to a random port on the local host:
docker run -d -p 127.0.0.1:3000:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
docker run -d -p 127.0.0.1:5000:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
Then you can configure an Nginx sconfiguration that looks something like this:
upstream app-a {
server 127.0.0.1:3000;
}
upstream app-b {
server 127.0.0.1:5000;
}
server {
listen 80;
server_name test.com www.test.com;
location / {
proxy_pass http://app-a;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://app-b;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Cool nginx reserve proxy config explain:
The most basic way to expose a web app running in a Docker container to the outside is to bind port 80 in the container to port 80 on the host system:
docker run -d -p 80:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
Though when you are running multiple app that you can't have them all listen on the same port. One way to get around this would be to set up an Nginx reverse proxy in front of the containers.
For example, say you have two different app. Bind them to a random port on the local host:
docker run -d -p 127.0.0.1:3000:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
docker run -d -p 127.0.0.1:5000:80 coreos/apache /usr/sbin/apache2ctl -D FOREGROUND
Then you can configure an Nginx sconfiguration that looks something like this:
upstream app-a {
server 127.0.0.1:3000;
}
upstream app-b {
server 127.0.0.1:5000;
}
server {
listen 80;
server_name test.com www.test.com;
location / {
proxy_pass http://app-a;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://app-b;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
Comments
Post a Comment