[nginx] Upstream: consistently initialize explicit upstreams.

Ruslan Ermilov ru at nginx.com
Mon Oct 31 20:39:56 UTC 2016


details:   http://hg.nginx.org/nginx/rev/640e1e778de6
branches:  
changeset: 6787:640e1e778de6
user:      Ruslan Ermilov <ru at nginx.com>
date:      Mon Oct 17 14:14:02 2016 +0300
description:
Upstream: consistently initialize explicit upstreams.

When an upstream{} block follows a proxy_pass reference to it,
such an upstream inherited port and default_port settings from
proxy_pass.  This was different from when they came in another
order (see ticket #1059).  Explicit upstreams should not have
port and default_port in any case.

This fixes the following case:

	server { location / { proxy_pass http://u; } ... }
	upstream u { server 127.0.0.1; }
	server { location / { proxy_pass https://u; } ... }

but not the following:

	server { location / { proxy_pass http://u; } ... }
	server { location / { proxy_pass https://u; } ... }
	upstream u { server 127.0.0.1; }

diffstat:

 src/http/ngx_http_upstream.c |  2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diffs (12 lines):

diff -r 906ac20234ed -r 640e1e778de6 src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c	Mon Oct 31 18:33:36 2016 +0300
+++ b/src/http/ngx_http_upstream.c	Mon Oct 17 14:14:02 2016 +0300
@@ -5768,6 +5768,8 @@ ngx_http_upstream_add(ngx_conf_t *cf, ng
 
         if (flags & NGX_HTTP_UPSTREAM_CREATE) {
             uscfp[i]->flags = flags;
+            uscfp[i]->port = 0;
+            uscfp[i]->default_port = 0;
         }
 
         return uscfp[i];



More information about the nginx-devel mailing list