<div dir="ltr">Не понял в данном случае, зачем надо что-то передавать в ссылку после file.zip. Ссылка для всех одна, а проверка уже идет из того, есть ли кука соответствующая. <br><div><div class="gmail_extra">Например, выставляем при авторизации куку is_authorized в 1. И проверяем:<br>
if($http_cookie ~* '^(.*)is_authorized=1(.*)$')<br></div><div class="gmail_extra">....тогда отдаем нормально<br></div><div class="gmail_extra">Иначе - 404.<br><br></div><div class="gmail_extra">>>А что-то посложнее можно придумать?<br>
</div><div class="gmail_extra">Посложнее в реализации? Зачем? :))<br><br></div><div class="gmail_extra">А вы случайно не файлообменник делаете? Ну т.е. обычный обмен файлами с ограниченным доступом (чтобы скачивали не все, а только определенные люди)? <br>
Если так, то проще сделать следующим образом (объясню саму идею, без конкретной реализации). У вас есть кнопка, на которую человек может нажать, чтобы получить право пользоваться файлом. Запускается скрипт, который решает, можно ли ему этот файл получить или нет (например, заплатил ли он за него или достаточно ли других прав - чистая бизнес-логика). Этот скрипт, если человеку можно файл отдать, создает проверочный файлик вида <ip_человека-сгенерированный_хэш>. <br>
</div><div class="gmail_extra"></div><div class="gmail_extra">А в location, который эти файлы отдает, ставите проверку (примерно такую):<br><br>set $fileName '';<br>set $secretKey '';<br>if ($request_uri ~* ^/path_to_files/([0-9a-z]+)/(.+)$) {<br>
        set $fileName $2;<br>        set $secretKey $1;<br>} <br>set $rightKey 0;<br>if (-f /path_to_download_keys/download_key/$remote_addr-$secretKey) {<br>      set $rightKey 1;<br>      rewrite ^(.*)$ /path_to_files/$fileName break;<br>
}<br>if ( $rightKey != 1) {<br>      return 404;<br>}<br><br></div><div class="gmail_extra">Клиенту отдаете ссылку /path_to_files/<$secretKey>/<filename>. Здесь $secretKey - это сгенерированный хэш из имени проверочного файлика.<br>
<br></div><div class="gmail_extra">И ссылки будут работать для данного ip, неважно, качается ли файл браузером или download-клиентом, до тех пор, пока существует файлик. Если надо ограничивать по времени, можно грохнуть проверочный файлик по расписанию. Если зайти на этот файл, не посещая соответствующую страницу, получишь 404. <br>
<br></div><div class="gmail_extra"></div><div class="gmail_extra"><br></div><div class="gmail_extra"><br><div class="gmail_quote">4 июля 2013 г., 11:41 пользователь shurik_saint <span dir="ltr"><<a href="mailto:nginx-forum@nginx.us" target="_blank">nginx-forum@nginx.us</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Т. е.<br>
для accesskey_signature выставляем что-то вроде "$cookie_issignedin",<br>
для всех залогиненых ставим куку issignedin, например, в "yes",<br>
и раздаём ссылки вида<br>
<a href="http://example.com/download/file.zip?key=09093abeac094" target="_blank">http://example.com/download/file.zip?key=09093abeac094</a>, где "09093abeac094"<br>
-- это заранее известный хэш куки issignedin.<br>
Правильно я понял?<br>
<br>
А что-то посложнее можно придумать?<br>
<br>
Posted at Nginx Forum: <a href="http://forum.nginx.org/read.php?21,240549,240574#msg-240574" target="_blank">http://forum.nginx.org/read.php?21,240549,240574#msg-240574</a><br>
<div class=""><div class="h5"><br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></div></div></blockquote></div><br></div></div></div>