ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: простая-директива if сколько-угодно-сложное-условие;



On Fri, Oct 09, 2009 at 09:35:20AM +0300, Gena Makhomed wrote:

> Igor Sysoev wrote:
> 
> >> Может быть, что-то типа
> >>
> >> if (...) {
> >>   fastcgi_no_cache;
> >> }
> >>
> >> было бы универсальнее?
> > 
> >> (А в идеальном мире - возможность вписыватьлюбые директивы fastcgi_cache*
> >> внутрь iif-ов.)
> > 
> > Сейчас именно конструкция "if (...) { }" - это хак внутри nginx'а.
> > Поэтому и любые директивы внутри if и не разрешены, а те, что разрешены
> > не всегда работают так, как ожидается.
> > 
> > Я скорее сделаю предикаты типа
> > 
> > fastcgi_no_cache   "$http_pragma == 'no-cache' && $trusted_addresses";
> > 
> > чем буду лечить "if (...) { }".
> 
> конструкция "if (...) { }" является нежелательной, потому что
> создается скрытый location, и не все работает так как ожидалось.
> 
> может быть вместо синтаксиса
> 
> fastcgi_no_cache "$http_pragma == 'no-cache' && $trusted_addresses";
> 
> limit_conn conn=5 zone=resp_zone if=$limit_conn;
> 
> сделать обобщенный вариант по аналогии с perl:
> 
> простая-директива if сколько-угодно-сложное-условие;
> 
> в этом случае не нужно будет делать скрытый location
> для if и останется возможность для развития, если в будущем
> будут добавлены функции, например, md5(  ), логические операторы и т.п.
> 
> fastcgi_no_cache if "$http_pragma == 'no-cache' && $trusted_addresses";
> 
> limit_conn conn=5 zone=resp_zone if $limit_conn;
> 
> PS http://perldoc.perl.org/perlsyn.html#Statement-Modifiers

Да, я планировал добавить if в большинство директив.


-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.