<div dir="ltr">Дело в том, что ссылки не постоянные.<br>Короткая и настоящая лежат в базе.<br><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">14 апреля 2013 г., 2:49 пользователь Anatoly Mikhailov <span dir="ltr"><<a href="mailto:anatoly@sonru.com" target="_blank">anatoly@sonru.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><br><div><div><div class="h5"><div>On Apr 13, 2013, at 10:45 PM, Роман <<a href="mailto:n.g.i.n.x.e.r@gmail.com" target="_blank">n.g.i.n.x.e.r@gmail.com</a>> wrote:</div>
<br><blockquote type="cite">Есть задачка скрыть реальное нахождение файла и отдавать его по<br>короткой ссылке. Например: заходим по ссылке<br><a href="http://site.com/03209393/file.tgz" target="_blank">http://site.com/03209393/file.tgz</a>, скачивание идет по ссылке<br>
<a href="http://site.com/03209393/file.tgz" target="_blank">http://site.com/03209393/file.tgz</a>, а на самом деле файл находится тут<br><a href="http://site.com/arhive/file.tgz" target="_blank">http://site.com/arhive/file.tgz</a><br>
<br>Задача довольно простая на первый взгляд, если бы не одно но.<br><br>Можно ли читать реальную ссылку не скриптом, а например из мемкеша?<br>Тогда бы nginx считывал ссылку и от давал файл без какого либо скрипта<br>в бекенде.<br>
<br>Вся задача сводится к убиранию бекенда.<br></blockquote><div><br></div></div></div><div>можно даже без мемкэша обойтись, просто соберите nginx с опцией <span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:Consolas,'Liberation Mono',Courier,monospace">--with-http_secure_link_module</span></div>
<div><br></div><div><pre style="line-height:16px;width:744px;font-size:12px;margin-bottom:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;margin-top:0px;word-wrap:break-word;padding:0px"><div>        location /download/ {</div>
<div>          rewrite         /download/([a-zA-Z0-9_\-]*)/([0-9]*)/(.*)\.tgz$ /archive/$3.tgz?st=$1&e=$2;</div><div>        }</div></pre><div><br></div><div><pre style="line-height:16px;width:744px;font-size:12px;margin-bottom:0px;font-family:Consolas,'Liberation Mono',Courier,monospace;margin-top:0px;word-wrap:break-word;padding:0px">
<div>        location /archive/ {</div><div>          internal;</div><div>          secure_link           $arg_st,$arg_e;</div><div>          secure_link_md5       YOUR_SECRET_PASSWORD_HERE$arg_e$uri;</div><div> </div><div>
          if ($secure_link = "")  { return 403; }</div><div>          if ($secure_link = "0") { return 403; }</div><div> </div></pre><div>             }</div></div><div><br></div></div><div><span style="line-height:16px;font-size:12px;white-space:pre-wrap;font-family:Consolas,'Liberation Mono',Courier,monospace">YOUR_SECRET_PASSWORD_HERE - </span>пароль, с помощью которого вы делаете шифр, $arg_e - timestamp</div>
<div>пример того, как генерить урлы на Ruby здесь <a href="https://gist.github.com/mikhailov/3174601" target="_blank">https://gist.github.com/mikhailov/3174601</a></div><div><br></div><blockquote type="cite">_______________________________________________<br>
nginx-ru mailing list<br><a href="mailto:nginx-ru@nginx.org" target="_blank">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></blockquote>
</div><br></div><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><br></blockquote></div><br></div>