Re: secure link в разных location

Maxim Dounin mdounin at mdounin.ru
Wed Oct 2 10:20:19 UTC 2013


Hello!

On Wed, Oct 02, 2013 at 05:20:32AM -0400, Unreal wrote:

> Здравствуйте.
> 
> Столкнулся с проблемой - необходимо использовать secure_link в двух разных
> location с разными приципами формаирования secure_link_md5 в пределах одного
> server. Вроде все просто:

[...]

> Но при этом ничего не работает. Собрал с debug, стал смотреть - первый
> локейшен отрабатывается четко как надо, переходим во второй, все выполняем
> кроме строк:
>          secure_link $key,$expire;
>          secure_link_md5 $secretPharse$expire$ip$uri;
> 
> Их nginx пропускает, тоесть повтороно он не обсчитывает md5 хеш... При этом
> в документации указано, что secure_link может применяться в http, server,
> location . 

Применять secure_link можно где угодно, но значение переменной 
$secure_link вычисляется только один раз за запрос.  Единожды 
вычисленное значение - кешируется.  Т.е. посчитать secure_link 
одним способом, а если не получилось, то другим - нельзя.

> Что делать?

Заранее разделить location'ы, где secure link'и нужно вычислять по 
разному, и уже после этого проверять $secure_link.  Правильнее 
всего как-то так:

    location /old/ {
        secure_link ...
        secure_link_md5 ...

        if ($secure_link != 1) { return 403; }

        ...
    }

    location /new/ {
        secure_link ...
        secure_link_md5 ...

        if ($secure_link != 1) { return 403; }

        ...
    }

-- 
Maxim Dounin
http://nginx.org/en/donation.html



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