Re: добавление переменных

Валентин Бартенев vbart at nginx.com
Thu Apr 4 13:41:40 UTC 2013


On Thursday 04 April 2013 08:04:53 Oleg wrote:
> On Thu, Apr 04, 2013 at 01:31:38AM +0400, Валентин Бартенев wrote:
> > On Thursday 04 April 2013 01:04:24 Oleg wrote:
> > > On Wed, Apr 03, 2013 at 11:24:18PM +0400, Валентин Бартенев wrote:
> > > > On Wednesday 03 April 2013 23:06:28 Oleg wrote:
> > > > >   Всем привет.
> > > > >   
> > > > >   Хочется добавлять переменные не перед конфигурацией процесса, а
> > > > > 
> > > > > в процессе обработки запроса. Такое возможно? Везде, где нашёл
> > > > > описание создания переменных, написано, что только в
> > > > > preconfiguration можно.
> > > > > 
> > > > >   Я так понимаю, что $cookie_* и $http_* динамически создаются?
> > > > 
> > > > Советую использовать grep src/.
> > > > 
> > >   А разве есть какой-то другой способ :-)?
> > >   
> > > > У этих переменных отдельные хуки в ngx_http_get_variable():
> > > > http://trac.nginx.org/nginx/browser/nginx/trunk/src/http/ngx_http_var
> > > > iabl es.c#L569
> > > > 
> > >   Это я видел.
> > >   Т.е. цивильного способа, не выходя за пределы модуля, такую
> > >   переменную
> > > 
> > > использовать нет? Надо ngx_http_get_variable править?
> > 
> > А для чего вам ещё одна magic-переменная, если не секрет?
> 
>   У меня есть модуль аутентификации, который после своей работы должен
> создавать некоторые переменные, в случае удачной аутентификации. Например,
> $my_user, $my_http_addr, $my_http_port, где последнии два используются для
> обратного прокси. Т.к. возможны конфигурации, где некоторых переменных нет,
> а при старте nginx не известно, какой набор данных есть для каждого
> пользователя, то не хотелось бы заранее забивать жёстко в исходник все
> возможные переменные.
>   Можно, конечно, формировать такой список переменных через конфиг, вроде:
> 
>   my_module_need_var "var1";
>   my_module_need_var "var2";
> 
>   И уже при старте nginx создавать обычным образом только то, что указано в
> конфиге явно. Но мне это кажется не красивым.
> 

Нормальный способ. Можно списком:

  my_module_vars var1 var2 var3;

--
Валентин Бартенев
http://nginx.org/en/donation.html


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