Welcome! Log In Create A New Profile

Advanced

[nginx] Upstream: refactored proxy_cache and friends.

Valentin Bartenev
December 22, 2014 05:02AM
details: http://hg.nginx.org/nginx/rev/634da79665d3
branches:
changeset: 5949:634da79665d3
user: Valentin Bartenev <vbart@nginx.com>
date: Mon Dec 22 12:59:02 2014 +0300
description:
Upstream: refactored proxy_cache and friends.

The configuration handling code has changed to look similar to the proxy_store
directive and friends. This simplifies adding variable support in the following
patch.

No functional changes.

diffstat:

src/http/modules/ngx_http_fastcgi_module.c | 41 +++++++++++++++--------------
src/http/modules/ngx_http_proxy_module.c | 41 +++++++++++++++--------------
src/http/modules/ngx_http_scgi_module.c | 38 +++++++++++++-------------
src/http/modules/ngx_http_uwsgi_module.c | 38 ++++++++++++++-------------
src/http/ngx_http_upstream.c | 6 ++--
src/http/ngx_http_upstream.h | 5 ++-
6 files changed, 88 insertions(+), 81 deletions(-)

diffs (truncated from 443 to 300 lines):

diff -r f2ff0aa89126 -r 634da79665d3 src/http/modules/ngx_http_fastcgi_module.c
--- a/src/http/modules/ngx_http_fastcgi_module.c Mon Dec 22 12:58:59 2014 +0300
+++ b/src/http/modules/ngx_http_fastcgi_module.c Mon Dec 22 12:59:02 2014 +0300
@@ -2352,6 +2352,7 @@ ngx_http_fastcgi_create_loc_conf(ngx_con
* conf->upstream.bufs.num = 0;
* conf->upstream.ignore_headers = 0;
* conf->upstream.next_upstream = 0;
+ * conf->upstream.cache_zone = NULL;
* conf->upstream.cache_use_stale = 0;
* conf->upstream.cache_methods = 0;
* conf->upstream.temp_path = NULL;
@@ -2390,7 +2391,7 @@ ngx_http_fastcgi_create_loc_conf(ngx_con
conf->upstream.pass_request_body = NGX_CONF_UNSET;

#if (NGX_HTTP_CACHE)
- conf->upstream.cache = NGX_CONF_UNSET_PTR;
+ conf->upstream.cache = NGX_CONF_UNSET;
conf->upstream.cache_min_uses = NGX_CONF_UNSET_UINT;
conf->upstream.cache_bypass = NGX_CONF_UNSET_PTR;
conf->upstream.no_cache = NGX_CONF_UNSET_PTR;
@@ -2435,12 +2436,10 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf
#if (NGX_HTTP_CACHE)

if (conf->upstream.store > 0) {
- conf->upstream.cache = NULL;
+ conf->upstream.cache = 0;
}

- if (conf->upstream.cache != NGX_CONF_UNSET_PTR
- && conf->upstream.cache != NULL)
- {
+ if (conf->upstream.cache > 0) {
conf->upstream.store = 0;
}

@@ -2613,13 +2612,17 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf

#if (NGX_HTTP_CACHE)

- ngx_conf_merge_ptr_value(conf->upstream.cache,
- prev->upstream.cache, NULL);
-
- if (conf->upstream.cache && conf->upstream.cache->data == NULL) {
+ if (conf->upstream.cache == NGX_CONF_UNSET) {
+ ngx_conf_merge_value(conf->upstream.cache,
+ prev->upstream.cache, 0);
+
+ conf->upstream.cache_zone = prev->upstream.cache_zone;
+ }
+
+ if (conf->upstream.cache_zone && conf->upstream.cache_zone->data == NULL) {
ngx_shm_zone_t *shm_zone;

- shm_zone = conf->upstream.cache;
+ shm_zone = conf->upstream.cache_zone;

ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"fastcgi_cache\" zone \"%V\" is unknown",
@@ -3230,13 +3233,9 @@ ngx_http_fastcgi_store(ngx_conf_t *cf, n
}

#if (NGX_HTTP_CACHE)
-
- if (flcf->upstream.cache != NGX_CONF_UNSET_PTR
- && flcf->upstream.cache != NULL)
- {
+ if (flcf->upstream.cache > 0) {
return "is incompatible with \"fastcgi_cache\"";
}
-
#endif

flcf->upstream.store = 1;
@@ -3277,12 +3276,12 @@ ngx_http_fastcgi_cache(ngx_conf_t *cf, n

value = cf->args->elts;

- if (flcf->upstream.cache != NGX_CONF_UNSET_PTR) {
+ if (flcf->upstream.cache != NGX_CONF_UNSET) {
return "is duplicate";
}

if (ngx_strcmp(value[1].data, "off") == 0) {
- flcf->upstream.cache = NULL;
+ flcf->upstream.cache = 0;
return NGX_CONF_OK;
}

@@ -3290,9 +3289,11 @@ ngx_http_fastcgi_cache(ngx_conf_t *cf, n
return "is incompatible with \"fastcgi_store\"";
}

- flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
- &ngx_http_fastcgi_module);
- if (flcf->upstream.cache == NULL) {
+ flcf->upstream.cache = 1;
+
+ flcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
+ &ngx_http_fastcgi_module);
+ if (flcf->upstream.cache_zone == NULL) {
return NGX_CONF_ERROR;
}

diff -r f2ff0aa89126 -r 634da79665d3 src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c Mon Dec 22 12:58:59 2014 +0300
+++ b/src/http/modules/ngx_http_proxy_module.c Mon Dec 22 12:59:02 2014 +0300
@@ -2509,6 +2509,7 @@ ngx_http_proxy_create_loc_conf(ngx_conf_
* conf->upstream.bufs.num = 0;
* conf->upstream.ignore_headers = 0;
* conf->upstream.next_upstream = 0;
+ * conf->upstream.cache_zone = NULL;
* conf->upstream.cache_use_stale = 0;
* conf->upstream.cache_methods = 0;
* conf->upstream.temp_path = NULL;
@@ -2566,7 +2567,7 @@ ngx_http_proxy_create_loc_conf(ngx_conf_
conf->upstream.pass_request_body = NGX_CONF_UNSET;

#if (NGX_HTTP_CACHE)
- conf->upstream.cache = NGX_CONF_UNSET_PTR;
+ conf->upstream.cache = NGX_CONF_UNSET;
conf->upstream.cache_min_uses = NGX_CONF_UNSET_UINT;
conf->upstream.cache_bypass = NGX_CONF_UNSET_PTR;
conf->upstream.no_cache = NGX_CONF_UNSET_PTR;
@@ -2627,12 +2628,10 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t
#if (NGX_HTTP_CACHE)

if (conf->upstream.store > 0) {
- conf->upstream.cache = NULL;
+ conf->upstream.cache = 0;
}

- if (conf->upstream.cache != NGX_CONF_UNSET_PTR
- && conf->upstream.cache != NULL)
- {
+ if (conf->upstream.cache > 0) {
conf->upstream.store = 0;
}

@@ -2804,13 +2803,17 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t

#if (NGX_HTTP_CACHE)

- ngx_conf_merge_ptr_value(conf->upstream.cache,
- prev->upstream.cache, NULL);
-
- if (conf->upstream.cache && conf->upstream.cache->data == NULL) {
+ if (conf->upstream.cache == NGX_CONF_UNSET) {
+ ngx_conf_merge_value(conf->upstream.cache,
+ prev->upstream.cache, 0);
+
+ conf->upstream.cache_zone = prev->upstream.cache_zone;
+ }
+
+ if (conf->upstream.cache_zone && conf->upstream.cache_zone->data == NULL) {
ngx_shm_zone_t *shm_zone;

- shm_zone = conf->upstream.cache;
+ shm_zone = conf->upstream.cache_zone;

ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"proxy_cache\" zone \"%V\" is unknown",
@@ -3818,13 +3821,9 @@ ngx_http_proxy_store(ngx_conf_t *cf, ngx
}

#if (NGX_HTTP_CACHE)
-
- if (plcf->upstream.cache != NGX_CONF_UNSET_PTR
- && plcf->upstream.cache != NULL)
- {
+ if (plcf->upstream.cache > 0) {
return "is incompatible with \"proxy_cache\"";
}
-
#endif

plcf->upstream.store = 1;
@@ -3865,12 +3864,12 @@ ngx_http_proxy_cache(ngx_conf_t *cf, ngx

value = cf->args->elts;

- if (plcf->upstream.cache != NGX_CONF_UNSET_PTR) {
+ if (plcf->upstream.cache != NGX_CONF_UNSET) {
return "is duplicate";
}

if (ngx_strcmp(value[1].data, "off") == 0) {
- plcf->upstream.cache = NULL;
+ plcf->upstream.cache = 0;
return NGX_CONF_OK;
}

@@ -3878,9 +3877,11 @@ ngx_http_proxy_cache(ngx_conf_t *cf, ngx
return "is incompatible with \"proxy_store\"";
}

- plcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
- &ngx_http_proxy_module);
- if (plcf->upstream.cache == NULL) {
+ plcf->upstream.cache = 1;
+
+ plcf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
+ &ngx_http_proxy_module);
+ if (plcf->upstream.cache_zone == NULL) {
return NGX_CONF_ERROR;
}

diff -r f2ff0aa89126 -r 634da79665d3 src/http/modules/ngx_http_scgi_module.c
--- a/src/http/modules/ngx_http_scgi_module.c Mon Dec 22 12:58:59 2014 +0300
+++ b/src/http/modules/ngx_http_scgi_module.c Mon Dec 22 12:59:02 2014 +0300
@@ -1148,7 +1148,7 @@ ngx_http_scgi_create_loc_conf(ngx_conf_t
conf->upstream.pass_request_body = NGX_CONF_UNSET;

#if (NGX_HTTP_CACHE)
- conf->upstream.cache = NGX_CONF_UNSET_PTR;
+ conf->upstream.cache = NGX_CONF_UNSET;
conf->upstream.cache_min_uses = NGX_CONF_UNSET_UINT;
conf->upstream.cache_bypass = NGX_CONF_UNSET_PTR;
conf->upstream.no_cache = NGX_CONF_UNSET_PTR;
@@ -1189,12 +1189,10 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t
#if (NGX_HTTP_CACHE)

if (conf->upstream.store > 0) {
- conf->upstream.cache = NULL;
+ conf->upstream.cache = 0;
}

- if (conf->upstream.cache != NGX_CONF_UNSET_PTR
- && conf->upstream.cache != NULL)
- {
+ if (conf->upstream.cache > 0) {
conf->upstream.store = 0;
}

@@ -1366,13 +1364,17 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t

#if (NGX_HTTP_CACHE)

- ngx_conf_merge_ptr_value(conf->upstream.cache,
- prev->upstream.cache, NULL);
+ if (conf->upstream.cache == NGX_CONF_UNSET) {
+ ngx_conf_merge_value(conf->upstream.cache,
+ prev->upstream.cache, 0);

- if (conf->upstream.cache && conf->upstream.cache->data == NULL) {
+ conf->upstream.cache_zone = prev->upstream.cache_zone;
+ }
+
+ if (conf->upstream.cache_zone && conf->upstream.cache_zone->data == NULL) {
ngx_shm_zone_t *shm_zone;

- shm_zone = conf->upstream.cache;
+ shm_zone = conf->upstream.cache_zone;

ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"scgi_cache\" zone \"%V\" is unknown",
@@ -1784,13 +1786,9 @@ ngx_http_scgi_store(ngx_conf_t *cf, ngx_
}

#if (NGX_HTTP_CACHE)
-
- if (scf->upstream.cache != NGX_CONF_UNSET_PTR
- && scf->upstream.cache != NULL)
- {
+ if (scf->upstream.cache > 0) {
return "is incompatible with \"scgi_cache\"";
}
-
#endif

scf->upstream.store = 1;
@@ -1831,12 +1829,12 @@ ngx_http_scgi_cache(ngx_conf_t *cf, ngx_

value = cf->args->elts;

- if (scf->upstream.cache != NGX_CONF_UNSET_PTR) {
+ if (scf->upstream.cache != NGX_CONF_UNSET) {
return "is duplicate";
}

if (ngx_strcmp(value[1].data, "off") == 0) {
- scf->upstream.cache = NULL;
+ scf->upstream.cache = 0;
return NGX_CONF_OK;
}

@@ -1844,9 +1842,11 @@ ngx_http_scgi_cache(ngx_conf_t *cf, ngx_
return "is incompatible with \"scgi_store\"";
}

- scf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
- &ngx_http_scgi_module);
- if (scf->upstream.cache == NULL) {
+ scf->upstream.cache = 1;
+
+ scf->upstream.cache_zone = ngx_shared_memory_add(cf, &value[1], 0,
+ &ngx_http_scgi_module);
+ if (scf->upstream.cache_zone == NULL) {
return NGX_CONF_ERROR;
}


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

[nginx] Upstream: refactored proxy_cache and friends.

Valentin Bartenev 598 December 22, 2014 05:02AM



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

Online Users

Guests: 145
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready