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

Andrey Kopeyko andrey at kopeyko.ru
Thu Aug 15 08:55:10 UTC 2013


15.08.2013 11:18, lekrus пишет:
> Здравствуйте,
>
> У меня используется переменная
> 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 хоть
> раз была вычислена, далее все остальные вызовы используют это значение,
> независимо от того, меняется ли переменная, по которой определяется
> значение?
>
> Есть ли возможность как-то заставить перевычислить это значение?

Я бы посоветовал пользовать две мапы вместо одной.
Что содержимое у них будет одинаковое - так генератору конфига это без 
разницы.


-- 
Best regards,
Andrey Kopeyko <andrey at kopeyko.ru>



Подробная информация о списке рассылки nginx-ru