Re: Установить переменную с помощью perl внутри location

Maxim Dounin mdounin на mdounin.ru
Чт Июл 16 17:45:25 UTC 2015


Hello!

On Thu, Jul 16, 2015 at 03:14:33PM +0300, Daniel Podolsky wrote:

> > При правильном выполнении должен проставиться заголовок X-MY-VAR равный
> > =CCCC=, но по факту ставится число 0.
> > Если убрать "=" из return, то заголовок просто не ставится (видимо, пустая
> > переменная).
> в перле "+" - не оператор конкатенации строк, извините.

Поработаю К.О.:
Это, в частности, означает, что результат 0 - правильный, и всё 
работает ровно так, как написано.

> ну и мне кажется, что $outer_variable выполнится раньше, чем код location

Нет.  Код, который вычисляет значение перловой переменной, 
выполняется в момент обращения к этой переменной.  Т.е., в случае 
add_header он выполнится только тогда, когда будет делаться 
add_header - уже в процессе возврата ответа.

Отмечу также, что код perl_set выполняется только один раз за 
запрос, и результат выполнения - кешируется до окончания запроса.  
Соответственно, ранее звучавшая в этом треде рекомендация 
сохранять значение с помощью set - избыточна.

-- 
Maxim Dounin
http://nginx.org/



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