[nginx] Upstream: handling of proxy_set_header at http level.
Maxim Dounin
mdounin at mdounin.ru
Fri Oct 14 18:14:03 UTC 2016
details: http://hg.nginx.org/nginx/rev/20eb4587225b
branches:
changeset: 6747:20eb4587225b
user: Maxim Dounin <mdounin at mdounin.ru>
date: Fri Oct 14 19:48:26 2016 +0300
description:
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.
diffstat:
src/http/modules/ngx_http_fastcgi_module.c | 14 ++++++++++++++
src/http/modules/ngx_http_proxy_module.c | 14 ++++++++++++++
src/http/modules/ngx_http_scgi_module.c | 14 ++++++++++++++
src/http/modules/ngx_http_uwsgi_module.c | 14 ++++++++++++++
4 files changed, 56 insertions(+), 0 deletions(-)
diffs (96 lines):
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -3127,6 +3127,20 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf
#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;
}
diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c
+++ b/src/http/modules/ngx_http_proxy_module.c
@@ -3357,6 +3357,20 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t
#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;
}
diff --git a/src/http/modules/ngx_http_scgi_module.c b/src/http/modules/ngx_http_scgi_module.c
--- a/src/http/modules/ngx_http_scgi_module.c
+++ b/src/http/modules/ngx_http_scgi_module.c
@@ -1558,6 +1558,20 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t
#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;
}
diff --git a/src/http/modules/ngx_http_uwsgi_module.c b/src/http/modules/ngx_http_uwsgi_module.c
--- a/src/http/modules/ngx_http_uwsgi_module.c
+++ b/src/http/modules/ngx_http_uwsgi_module.c
@@ -1820,6 +1820,20 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t
#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;
}
More information about the nginx-devel
mailing list