[nginx] Upstream: don't consider default_port when matching upstreams.

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


details:   http://hg.nginx.org/nginx/rev/3fa5983b6b44
branches:  
changeset: 6788:3fa5983b6b44
user:      Ruslan Ermilov <ru at nginx.com>
date:      Mon Oct 17 14:27:45 2016 +0300
description:
Upstream: don't consider default_port when matching upstreams.

The only thing that default_port comparison did in the current
code is prevented implicit upstreams to the same address/port
from being aliased for http and https, e.g.:

	proxy_pass http://10.0.0.1:12345;
	proxy_pass https://10.0.0.1:12345;

This is inconsistent because it doesn't work for a similar case
with uswgi_pass:

	uwsgi_pass uwsgi://10.0.0.1:12345;
	uwsgi_pass suwsgi://10.0.0.1:12345;

or with an explicit upstream:

	upstream u {
	    server 10.0.0.1:12345;
	}

	proxy_pass http://u;
	proxy_pass https://u;

Before c9059bd5445b, default_port comparison was needed to
differentiate implicit upstreams in

	proxy_pass http://example.com;

and

	proxy_pass https://example.com;

as u->port was not set.

diffstat:

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

diffs (16 lines):

diff -r 640e1e778de6 -r 3fa5983b6b44 src/http/ngx_http_upstream.c
--- a/src/http/ngx_http_upstream.c	Mon Oct 17 14:14:02 2016 +0300
+++ b/src/http/ngx_http_upstream.c	Mon Oct 17 14:27:45 2016 +0300
@@ -5760,12 +5760,6 @@ ngx_http_upstream_add(ngx_conf_t *cf, ng
             continue;
         }
 
-        if (uscfp[i]->default_port && u->default_port
-            && uscfp[i]->default_port != u->default_port)
-        {
-            continue;
-        }
-
         if (flags & NGX_HTTP_UPSTREAM_CREATE) {
             uscfp[i]->flags = flags;
             uscfp[i]->port = 0;



More information about the nginx-devel mailing list