Skip to content

A simple nginx-proxy server setup in a docker container for web services running on separate docker containers.

License

Notifications You must be signed in to change notification settings

bhaskarkc/nginx-proxy-containers

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

NGINX proxy server for docker containers.

This is a simple nginx proxy server setup to map web apps running independently on separate containers.

Image

To setup the proxy server for you local apps just update proxy/servers.json file with respective settings.

[
    {
        "site_a": {
            "server_name":"my-site-a",
            "location":"/"
        },
        "site_b": {
            "server_name":"my-site-b",
            "location":"/"
        }
    }
]

For instance, if we are running more than one web apps on docker containers then obviously, we will not be able to expose same external port for the app.

for example:
- http://my-site-a/
- http://my-site-b/

By using, nginx proxy server we can request respective servers irrespective to the exposed port to host.

Docker Network

Docker containers need to be in same network in order to identify each other. Therefore, we will have to create a bridge network and assign that network to every docker container we wish to put in the proxy network.

docker network create -d bridge nginx-proxy

Include, network config in docker compose file, for example:

version: '3.5'
services:
 site_a:
  container_name: mysite_a
   image: nginx:alpine
   networks:
    - nginx-proxy
networks:
  nginx-proxy:
    name: nginx-proxy

Test

Add hostnames entries in your host machine's /etc/hosts file.

127.0.0.1 my-site-a
127.0.0.1 my-site-b

This repo consists of a working proxy server and sample web app site_a and site_b.

Steps:

  1. docker-compose -f site-A/docker-compose.yml up --build -d : Spin up site_a container.
  2. docker-compose -f site-B/docker-compose.yml up --build -d : Spin up site_b container.
  3. docker-compose -f proxy/docker-compose.yml up --build -d : Spins up the the_proxy container.

Curl request from host machine would look like below.

➜ curl -I my-site-a
HTTP/1.1 200 OK
Server: nginx/1.15.8
Date: Sun, 27 Jan 2019 12:01:02 GMT
Content-Type: text/plain
Content-Length: 18
Connection: keep-alive

NGINX config

    upstream site_a { server site_a; }

or,

    upstream site_a { server site_a:3000; }
    upstream site_b { server site_b:3000; }

Here site_a and site_b is name of the running docker containers and 3000 is the port exposed in that container.

Typical proxy server config.

So, typical proxy server config looks like as below.

upstream site_a { server site_a:3000; }
server {
    listen 80;
    server_name my-site-a;
    location / {
        proxy_pass http://site_a;
        proxy_redirect off;
    }
}

upstream site_b { server site_b:3000; }
server {
    listen 80;
    server_name my-site-b;
    location / {
        proxy_pass http://site_b;
        proxy_redirect off;
    }
}

About

A simple nginx-proxy server setup in a docker container for web services running on separate docker containers.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published