простая-директива if сколько-угодно-сложное-условие;
Gena Makhomed
gmm at csdoc.com
Fri Oct 9 10:35:20 MSD 2009
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
>>> По-хорошему это надо бы делать как-то так:
>>>
>>> fastcgi_no_cache $cookie_debugMode;
>>> fastcgi_no_cache $arg_nc;
>>> fastcgi_no_cache $http_authorization;
>>> fastcgi_no_cache $http_pragma;
>>>
>>> Возможно, завтра сделаю.
>>>
>>>> 2009/10/6 1nsk.ru <alfa at 1nsk.ru>
>>>>
>>>>> А как обернуть всё это дело в
>>>>>
>>>>> ?
>>>>> if ($http_cookie !~ "user_id") {
>>>>> #кэшируем только гостям
>>>>> }
>>>>>
>>>>> А то в if нельзя fastcgi_store
>>>>>
--
Best regards,
Gena
More information about the nginx-ru
mailing list