Welcome! Log In Create A New Profile

Advanced

[nginx] Upstream: inheritance of proxy_pass and friends (ticket ...

Maxim Dounin
December 09, 2014 10:54AM
details: http://hg.nginx.org/nginx/rev/5b9f711dc819
branches:
changeset: 5937:5b9f711dc819
user: Maxim Dounin <mdounin@mdounin.ru>
date: Tue Dec 09 18:21:55 2014 +0300
description:
Upstream: inheritance of proxy_pass and friends (ticket #645).

Instead of independant inheritance of conf->upstream.upstream (proxy_pass
without variables) and conf->proxy_lengths (proxy_pass with variables)
we now test them both and inherit only if neither is set. Additionally,
SSL context is also inherited only in this case now.

Based on the patch by Alexey Radkov.

diffstat:

src/http/modules/ngx_http_fastcgi_module.c | 5 +----
src/http/modules/ngx_http_proxy_module.c | 16 ++++++----------
src/http/modules/ngx_http_scgi_module.c | 5 +----
src/http/modules/ngx_http_uwsgi_module.c | 14 ++++++--------
4 files changed, 14 insertions(+), 26 deletions(-)

diffs (103 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
@@ -2697,11 +2697,8 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf
return NGX_CONF_ERROR;
}

- if (conf->upstream.upstream == NULL) {
+ if (conf->upstream.upstream == NULL && conf->fastcgi_lengths == NULL) {
conf->upstream.upstream = prev->upstream.upstream;
- }
-
- if (conf->fastcgi_lengths == NULL) {
conf->fastcgi_lengths = prev->fastcgi_lengths;
conf->fastcgi_values = prev->fastcgi_values;
}
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
@@ -2968,12 +2968,6 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t

ngx_conf_merge_ptr_value(conf->cookie_paths, prev->cookie_paths, NULL);

-#if (NGX_HTTP_SSL)
- if (conf->upstream.ssl == NULL) {
- conf->upstream.ssl = prev->upstream.ssl;
- }
-#endif
-
ngx_conf_merge_uint_value(conf->http_version, prev->http_version,
NGX_HTTP_VERSION_10);

@@ -2997,14 +2991,16 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t
return NGX_CONF_ERROR;
}

- if (conf->upstream.upstream == NULL) {
+ if (conf->upstream.upstream == NULL && conf->proxy_lengths == NULL) {
conf->upstream.upstream = prev->upstream.upstream;
conf->vars = prev->vars;
- }
-
- if (conf->proxy_lengths == NULL) {
+
conf->proxy_lengths = prev->proxy_lengths;
conf->proxy_values = prev->proxy_values;
+
+#if (NGX_HTTP_SSL)
+ conf->upstream.ssl = prev->upstream.ssl;
+#endif
}

if (conf->upstream.upstream || conf->proxy_lengths) {
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
@@ -1443,11 +1443,8 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t
return NGX_CONF_ERROR;
}

- if (conf->upstream.upstream == NULL) {
+ if (conf->upstream.upstream == NULL && conf->scgi_lengths == NULL) {
conf->upstream.upstream = prev->upstream.upstream;
- }
-
- if (conf->scgi_lengths == NULL) {
conf->scgi_lengths = prev->scgi_lengths;
conf->scgi_values = prev->scgi_values;
}
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
@@ -1683,10 +1683,6 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t
return NGX_CONF_ERROR;
}

- if (conf->upstream.ssl == NULL) {
- conf->upstream.ssl = prev->upstream.ssl;
- }
-
#endif

ngx_conf_merge_str_value(conf->uwsgi_string, prev->uwsgi_string, "");
@@ -1702,13 +1698,15 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t
return NGX_CONF_ERROR;
}

- if (conf->upstream.upstream == NULL) {
+ if (conf->upstream.upstream == NULL && conf->uwsgi_lengths == NULL) {
conf->upstream.upstream = prev->upstream.upstream;
- }
-
- if (conf->uwsgi_lengths == NULL) {
+
conf->uwsgi_lengths = prev->uwsgi_lengths;
conf->uwsgi_values = prev->uwsgi_values;
+
+#if (NGX_HTTP_SSL)
+ conf->upstream.ssl = prev->upstream.ssl;
+#endif
}

if (conf->upstream.upstream || conf->uwsgi_lengths) {

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Upstream: inheritance of proxy_pass and friends (ticket ...

Maxim Dounin 653 December 09, 2014 10:54AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 258
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready