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