Sign inSign up

svidrascu/dynginx

By svidrascu

•Updated almost 10 years ago

A extended docker image for nginx, configurable trough env variables.

Image
0

2.4K

svidrascu/dynginx repository overview

⁠dynginx

A extended docker image for nginx, configurable trough env variables. This can be easily used with docker-compose.

This image can handle locations and multiple upstreams per location. The upstream config is entirely at you disposal however for now the location is just autogenerated.

⁠Usage

Build the image then you can use it in docker-compose as follows:

loadbalancer:
  image: dynginx
  environment:
    NGINX_PORT: "80"
    SERVICE_1: "location1:server upstream:9999"
    SERVICE_2: "location2:server upstream:9122/server upstream2:9122"
  ports:
    - '80:80'

this will generate the following nginx config:

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


daemon off;

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen 80;

       			location /location1 {
       				proxy_pass http://upstreamlocation1/location1;
       			}

       			location /location2 {
       				proxy_pass http://upstreamlocation2/location2;
       			}

       		}

       		upstream upstreamlocation1 {
       			server upstream:9999;
       		}

       		upstream upstreamlocation2 {
       			server upstream:9122;
            server upstream2:9122;
       		}


}

O course you'll also have to make sure you can connect to the upstreams also.

The container can take up to 5 services specified independently but it can take many many more if you just make sure to separate each service by a comma "," within the service variable:

SERVICE_1: "location1:server upstream:8070,location2:server upstream:8081/server upstream2:8081"

Also make sure that every upstream line is divided by "/"

⁠Enjoy :)

Tag summary

Content type

Image

Digest

Size

67.9 MB

Last updated

almost 10 years ago

docker pull svidrascu/dynginx