diff --git a/rootfs/etc/nginx/template/nginx.tmpl b/rootfs/etc/nginx/template/nginx.tmpl index f828b1a17..b919fed0f 100755 --- a/rootfs/etc/nginx/template/nginx.tmpl +++ b/rootfs/etc/nginx/template/nginx.tmpl @@ -376,6 +376,9 @@ http { {{ end}} } + {{ end }} + + {{ if $cfg.UseForwardedHeaders }} map $http_x_forwarded_proto $full_x_forwarded_proto { default $http_x_forwarded_proto; "" $scheme; @@ -1190,13 +1193,16 @@ stream { {{ $proxySetHeader }} X-Real-IP $remote_addr; {{ if and $all.Cfg.UseForwardedHeaders $all.Cfg.ComputeFullForwardedFor }} {{ $proxySetHeader }} X-Forwarded-For $full_x_forwarded_for; - {{ $proxySetHeader }} X-Forwarded-Proto $full_x_forwarded_proto; {{ else }} {{ $proxySetHeader }} X-Forwarded-For $remote_addr; {{ end }} + {{ if $all.Cfg.UseForwardedHeaders }} + {{ $proxySetHeader }} X-Forwarded-Proto $full_x_forwarded_proto; + {{ else }} + {{ $proxySetHeader }} X-Forwarded-Proto $pass_access_scheme; + {{ end }} {{ $proxySetHeader }} X-Forwarded-Host $best_http_host; {{ $proxySetHeader }} X-Forwarded-Port $pass_port; - {{ $proxySetHeader }} X-Forwarded-Proto $pass_access_scheme; {{ if $all.Cfg.ProxyAddOriginalURIHeader }} {{ $proxySetHeader }} X-Original-URI $request_uri; {{ end }} diff --git a/test/e2e/settings/forwarded_headers.go b/test/e2e/settings/forwarded_headers.go index 40ea30831..7c09a2406 100644 --- a/test/e2e/settings/forwarded_headers.go +++ b/test/e2e/settings/forwarded_headers.go @@ -47,7 +47,8 @@ var _ = framework.DescribeSetting("use-forwarded-headers", func() { f.WaitForNginxServer(host, func(server string) bool { - return strings.Contains(server, "server_name forwarded-headers") + return strings.Contains(server, "server_name forwarded-headers") && + strings.Contains(server, "proxy_set_header X-Forwarded-Proto $full_x_forwarded_proto;") }) ginkgo.By("ensuring single values are parsed correctly") @@ -95,7 +96,8 @@ var _ = framework.DescribeSetting("use-forwarded-headers", func() { f.WaitForNginxServer(host, func(server string) bool { - return strings.Contains(server, "server_name forwarded-headers") + return strings.Contains(server, "server_name forwarded-headers") && + strings.Contains(server, "proxy_set_header X-Forwarded-Proto $pass_access_scheme;") }) body := f.HTTPTestClient().