From f0951df0408d9661b70317985414f1dad28ce948 Mon Sep 17 00:00:00 2001 From: Thomas LEVEIL Date: Tue, 14 Feb 2017 22:48:29 +0100 Subject: [PATCH] optional IPv6 support Fix #127 and fix #717 by improving #713 --- README.md | 6 ++++++ nginx.tmpl | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/README.md b/README.md index 3619d94..abe6eef 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,12 @@ $ curl -H "Host: whoami.local" localhost I'm 5b129ab83266 ``` +### IPv6 support + +You can activate the IPv6 support for the nginx-proxy container by passing the value `true` to the `ENABLE_IPV6` environment variable: + + $ docker run -d -p 80:80 -e ENABLE_IPV6=true -v /var/run/docker.sock:/tmp/docker.sock:ro jwilder/nginx-proxy + ### Multiple Ports If your container exposes multiple ports, nginx-proxy will default to the service running on port 80. If you need to specify a different port, you can set a VIRTUAL_PORT env var to select a different one. If your container only exposes one port and it has a VIRTUAL_HOST env var set, that port will be selected. diff --git a/nginx.tmpl b/nginx.tmpl index 2cbd156..3eb0298 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -71,10 +71,13 @@ proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port; proxy_set_header Proxy ""; {{ end }} +{{ $enable_ipv6 := eq (or ($.Env.ENABLE_IPV6) "") "true" }} server { server_name _; # This is just an invalid value which will never trigger on a real hostname. listen 80; + {{ if $enable_ipv6 }} listen [::]:80; + {{ end }} access_log /var/log/nginx/access.log vhost; return 503; } @@ -83,7 +86,9 @@ server { server { server_name _; # This is just an invalid value which will never trigger on a real hostname. listen 443 ssl http2; + {{ if $enable_ipv6 }} listen [::]:443 ssl http2; + {{ end }} access_log /var/log/nginx/access.log vhost; return 503; @@ -151,7 +156,9 @@ upstream {{ $upstream_name }} { server { server_name {{ $host }}; listen 80 {{ $default_server }}; + {{ if $enable_ipv6 }} listen [::]:80 {{ $default_server }}; + {{ end }} access_log /var/log/nginx/access.log vhost; return 301 https://$host$request_uri; } @@ -160,7 +167,9 @@ server { server { server_name {{ $host }}; listen 443 ssl http2 {{ $default_server }}; + {{ if $enable_ipv6 }} listen [::]:443 ssl http2 {{ $default_server }}; + {{ end }} access_log /var/log/nginx/access.log vhost; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; @@ -214,7 +223,9 @@ server { server { server_name {{ $host }}; listen 80 {{ $default_server }}; + {{ if $enable_ipv6 }} listen [::]:80 {{ $default_server }}; + {{ end }} access_log /var/log/nginx/access.log vhost; {{ if (exists (printf "/etc/nginx/vhost.d/%s" $host)) }} @@ -246,7 +257,9 @@ server { server { server_name {{ $host }}; listen 443 ssl http2 {{ $default_server }}; + {{ if $enable_ipv6 }} listen [::]:443 ssl http2 {{ $default_server }}; + {{ end }} access_log /var/log/nginx/access.log vhost; return 500;