]> git.kaiwu.me - nginx.git/commitdiff
Upstream: don't consider default_port when matching upstreams.
authorRuslan Ermilov <ru@nginx.com>
Mon, 17 Oct 2016 11:27:45 +0000 (14:27 +0300)
committerRuslan Ermilov <ru@nginx.com>
Mon, 17 Oct 2016 11:27:45 +0000 (14:27 +0300)
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.

src/http/ngx_http_upstream.c

index 828b7d726cb3dcb3c6b0ed7bcf1ddf7b94ba5418..6e5cab8ed8b89cd40347afe4d14659afe2055dc7 100644 (file)
@@ -5760,12 +5760,6 @@ ngx_http_upstream_add(ngx_conf_t *cf, ngx_url_t *u, ngx_uint_t flags)
             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;