Re: try_files и if

Roman sirotar at mail.ru
Tue Feb 12 13:35:34 UTC 2013


12.02.2013 12:41, Maxim Dounin пишет:
> Hello!
>
> On Tue, Feb 12, 2013 at 10:10:36AM +0200, Roman wrote:
>
>> Добрый день,
>> у меня имеется nginx version: nginx/1.0.12 и
>> я конечно же читал сей замечательный документ :
>> http://wiki.nginx.org/IfIsEvil
>>
>> Но очень хочется такого функционала:
>>
>>
>>      map $http_referer $flag {
>>          default 0;
>>          "~*domain.com" 1;
>>          ...
>>          ...
>>          }
>>
>> ...
>>
>>          location ~* ^/([a-z0-9\-]+)/ {
>>             try_files     $uri $uri/ /catalog/$1/best/index.html =404;
>>             root /home/wwwroot;
>>             if ($flag)
>>             {
>>                 add_header Set-Cookie ...;
>>             }
>>
>>          }
>> Но естественно такой вариат с try_files & if не работает, сломал
>> голову всю и никак не могу придумать альтернативного решения,
>> может кто подскажет какую идею?
> Сделать map вида:
>
>      map $flag $cookievalue {
>          0     "";
>          1     "...";
>      }
>
> И дальше add_header безусловно:
>
>      add_header Set-Cookie $cookievalue;
>
> Если в результате map'а в переменной $cookievalue получится пустая
> строка - соответствующий заголовок клиенту отослан не будет, если
> получится непустая - будет, что, насколько я понимаю, и требуется
> в задаче.
>

Большущее спасибо,
тогда, если можно, вот еще такой вопросик,

perl_set $uidset '
         sub {
             use Time::HiRes qw(gettimeofday);
             ($sec,$milli) = gettimeofday;
             return (($sec & 0x000FFFFF) << 8)+($milli & 0x000000FF) . 
",".time();
         }
';
...
map $flag $cookievalue {
     0 "";
     1 "cookie1=$uidset; Max-Age=86400; path=/;";
}
в таком варианте при $flag = 1 в $cookievalue попадает срока как есть т.е.
cookie1=$uidset; Max-Age=86400; path=/;

есть ли какие механизмы запихнуть в вычисляемое значение map 
($cookievalue), уже посчитанное значение переменной $uidset?

Спасибо.



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