From 30a53fb60a6edacf37febd9abbaa32202a3cb662 Mon Sep 17 00:00:00 2001 From: Ben Hall Date: Wed, 24 Dec 2014 12:21:40 +0000 Subject: [PATCH] Ability to set a default host for nginx --- Dockerfile | 2 +- README.md | 7 +++++++ nginx.tmpl | 13 +++++++++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index d3f29c5..fe15ab0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN apt-get update \ RUN echo "daemon off;" >> /etc/nginx/nginx.conf \ && sed -i 's/^http {/&\n server_names_hash_bucket_size 64;/g' /etc/nginx/nginx.conf - # Install Forego +# Install Forego RUN wget -P /usr/local/bin https://godist.herokuapp.com/projects/ddollar/forego/releases/current/linux-amd64/forego \ && chmod u+x /usr/local/bin/forego diff --git a/README.md b/README.md index f50796d..4817abb 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,13 @@ If your container exposes multiple ports, nginx-proxy will default to the servic If you need to support multipe virtual hosts for a container, you can separate each entry with commas. For example, `foo.bar.com,baz.bar.com,bar.com` and each host will be setup the same. +### Default Host + +To set the default host for nginx use the env var `DEFAULT_HOST=foo.bar.com` for example + + $ docker run -d -p 80:80 -e DEFAULT_HOST=foo.bar.com -v /var/run/docker.sock:/tmp/docker.sock jwilder/nginx-proxy + + ### Separate Containers nginx-proxy can also be run as two separate containers using the [jwilder/docker-gen](https://index.docker.io/u/jwilder/docker-gen/) diff --git a/nginx.tmpl b/nginx.tmpl index fd5d2e9..57aea2c 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -32,7 +32,7 @@ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto; server { - listen 80 default_server; + listen 80; server_name _; # This is just an invalid value which will never trigger on a real hostname. return 503; } @@ -115,7 +115,16 @@ server { {{ else }} server { - server_name {{ $host }}; + {{ if $.Env.DEFAULT_HOST }} + {{ if eq $.Env.DEFAULT_HOST $host }} + listen 80 default_server; + server_name {{ $host }}; + {{ else }} + server_name {{ $host }}; + {{ end }} + {{ else }} + server_name {{ $host }}; + {{ end }} location / { proxy_pass http://{{ $host }};