Welcome! Log In Create A New Profile

Advanced

Re: вызов map variable дважды

Ruslan Ermilov
August 15, 2013 04:28AM
On Thu, Aug 15, 2013 at 03:18:43AM -0400, lekrus wrote:
> Здравствуйте,
>
> У меня используется переменная
> map $v_host $backend {
> default 1;
> test 2;
> test2 3;
> }
>
> Далее идет
>
> location / {
> set $v_host test;
> proxy_pass $backend #(тут переменная $backend правильно определяется, равна
> 2)
> }
>
> в процессе, upstream возвращает X-Accel-Redirect который вызывает другой
> location /int {
> internal;
> set $v_host test2;
> rewrite (.*) $backend
> }
>
> и при таком вызове $backend остается равен 2, должен быть 3.
>
> Я правильно понимаю, что в процессе одного вызова, если переменная map хоть
> раз была вычислена, далее все остальные вызовы используют это значение,
> независимо от того, меняется ли переменная, по которой определяется
> значение?

Правильно понимаете. Определяться кстати она может не только
по одной переменной, а по произвольному выражению, содержащему
как строки, так и переменные.

> Есть ли возможность как-то заставить перевычислить это значение?

Можно, но только пропатчив nginx:

diff --git a/src/http/modules/ngx_http_map_module.c b/src/http/modules/ngx_http_map_module.c
--- a/src/http/modules/ngx_http_map_module.c
+++ b/src/http/modules/ngx_http_map_module.c
@@ -477,7 +477,7 @@ ngx_http_map(ngx_conf_t *cf, ngx_command
}

var->valid = 1;
- var->no_cacheable = 0;
+ var->no_cacheable = 1;
var->not_found = 0;

vp = ngx_array_push(&ctx->values_hash[key]);

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

вызов map variable дважды

lekrus August 15, 2013 03:18AM

Re: вызов map variable дважды

Ruslan Ermilov August 15, 2013 04:28AM

Re: вызов map variable дважды

lekrus August 15, 2013 05:07AM

Re: вызов map variable дважды

Andrey Kopeyko August 15, 2013 04:56AM

Re: вызов map variable дважды

lekrus August 15, 2013 05:05AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 321
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