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

Igor Sysoev is at rambler-co.ru
Fri Oct 9 11:19:09 MSD 2009


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





More information about the nginx-ru mailing list