Upstream: handling of proxy_set_header at http level.

When headers are set at the "http" level and not redefined in
a server block, we now preserve conf->headers into the "http"
section configuration to inherit it to all servers.

The same applies to conf->headers_cache, though it may not be effective
if no servers use cache at the "server" level as conf->headers_cache
is only initialized if cache is enabled on a given level.

Similar changes made in fastcgi/scgi/uwsgi to preserve conf->params
and conf->params_cache.
This commit is contained in:
Maxim Dounin 2016-10-14 19:48:26 +03:00
parent 88edfc470d
commit 92a74ff25e
4 changed files with 56 additions and 0 deletions

View File

@ -3127,6 +3127,20 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
#endif
/*
* special handling to preserve conf->params in the "http" section
* to inherit it to all servers
*/
if (prev->params.hash.buckets == NULL
&& conf->params_source == prev->params_source)
{
prev->params = conf->params;
#if (NGX_HTTP_CACHE)
prev->params_cache = conf->params_cache;
#endif
}
return NGX_CONF_OK;
}

View File

@ -3357,6 +3357,20 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
#endif
/*
* special handling to preserve conf->headers in the "http" section
* to inherit it to all servers
*/
if (prev->headers.hash.buckets == NULL
&& conf->headers_source == prev->headers_source)
{
prev->headers = conf->headers;
#if (NGX_HTTP_CACHE)
prev->headers_cache = conf->headers_cache;
#endif
}
return NGX_CONF_OK;
}

View File

@ -1558,6 +1558,20 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
#endif
/*
* special handling to preserve conf->params in the "http" section
* to inherit it to all servers
*/
if (prev->params.hash.buckets == NULL
&& conf->params_source == prev->params_source)
{
prev->params = conf->params;
#if (NGX_HTTP_CACHE)
prev->params_cache = conf->params_cache;
#endif
}
return NGX_CONF_OK;
}

View File

@ -1820,6 +1820,20 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
#endif
/*
* special handling to preserve conf->params in the "http" section
* to inherit it to all servers
*/
if (prev->params.hash.buckets == NULL
&& conf->params_source == prev->params_source)
{
prev->params = conf->params;
#if (NGX_HTTP_CACHE)
prev->params_cache = conf->params_cache;
#endif
}
return NGX_CONF_OK;
}