From 2f71008ea4a69189dbac0d7e93f8d3d782e5f325 Mon Sep 17 00:00:00 2001 From: propheth Date: Thu, 25 Feb 2021 11:59:58 -0500 Subject: [PATCH] Add support for virtual host redirection --- nginx.tmpl | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/nginx.tmpl b/nginx.tmpl index 07e2b50..012d747 100644 --- a/nginx.tmpl +++ b/nginx.tmpl @@ -225,6 +225,8 @@ upstream {{ $upstream_name }} { {{/* Get the VIRTUAL_ROOT By containers w/ use fastcgi root */}} {{ $vhost_root := or (first (groupByKeys $containers "Env.VIRTUAL_ROOT")) "/var/www/public" }} +{{/* Get the first redirect defined by containers w/ the same vhost */}} +{{ $redirectHost := or (first (groupByKeys $containers "Env.REDIRECT")) ""}} {{/* Get the first cert name defined by containers w/ the same vhost */}} {{ $certName := (first (groupByKeys $containers "Env.CERT_NAME")) }} @@ -260,10 +262,20 @@ server { try_files $uri =404; break; } - + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + # Redirect host {{ $host }} => {{ $redirectHost }} + {{ end }} + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + location / { + return 301 https://{{ $redirectHost }}$request_uri; + } + {{ else }} location / { return 301 https://$host$request_uri; } + {{ end }} } {{ end }} @@ -308,7 +320,12 @@ server { {{ else if (exists "/etc/nginx/vhost.d/default") }} include /etc/nginx/vhost.d/default; {{ end }} + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + # Redirect host {{ $host }} => {{ $redirectHost }} + {{ end }} + {{ if (or (not $redirectHost) (eq $redirectHost $host)) }} location / { {{ if eq $proto "uwsgi" }} include uwsgi_params; @@ -333,6 +350,13 @@ server { include /etc/nginx/vhost.d/default_location; {{ end }} } + {{ end }} + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + location / { + return 301 https://{{$redirectHost}}$request_uri; + } + {{ end }} } {{ end }} @@ -357,7 +381,12 @@ server { {{ else if (exists "/etc/nginx/vhost.d/default") }} include /etc/nginx/vhost.d/default; {{ end }} + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + # Redirect host {{ $host }} => {{ $redirectHost }} + {{ end }} + {{ if (or (not $redirectHost) (eq $redirectHost $host)) }} location / { {{ if eq $proto "uwsgi" }} include uwsgi_params; @@ -381,6 +410,13 @@ server { include /etc/nginx/vhost.d/default_location; {{ end }} } + {{ end }} + + {{ if (and $redirectHost (ne $redirectHost $host)) }} + location / { + return 301 http://{{ $redirectHost }}$request_uri; + } + {{ end }} } {{ if (and (not $is_https) (exists "/etc/nginx/certs/default.crt") (exists "/etc/nginx/certs/default.key")) }}