реально ли это?

Andrew Kopeyko kaa at ramtel.ru
Tue Dec 13 10:57:20 MSK 2005


On Tue, 13 Dec 2005, Andrew Velikoredchanin wrote:

> Pavel Sokolov пишет:
>> Есть сайт на котором лежат файлы для загрузки ( отдаются nginx'ом )
>> Причём отдаваться они должны через редирект.
>> Так вот, некоторые редиски ставят(на своих сайтах) прямые линки на файлы 
>> вместо страницы с редиректом.
>> Как бы это нивелировать?
>> 
>> 1. Либо добавить какой опшен чтобы nginx отдавал файлы как бы из указанной 
>> отдельно папки.
>> тоесть на сайте указано:
>> http://www.bbb.com/downloads/file.exe
>> Это будет редирект на
>> http://www.bbb.com/downloads2/file.exe

Ничего добавлять не требуется - "всё уже добавлено до нас" (с)

>> 
>> так вот может ли nginx отдавать клиенту файл из /downloads2/
>> будто он находится в /downloads/ ?  чтобы небыло видно реального пути ни 
>> под каким предлогом.
>> 
>> 2. Либо както непускать народ напрямую качать файло из /downloads2/
>> но это для меня вообще непонятно как сделать.
>> 
>> ps. человек 20 кому это надо я легко предоставлю.
>
> nginx для этого очень хорошо подходит.
>
> 1. Это можно сделать через rewrite, но не вижу особого смысла.

Вот работающий пример (nginx/0.3.5) :

         # редиректим всех внешних прямых качков
         valid_referers  none www.zvuki.ru/ dl.zvuki.ru/ dl2.zvuki.ru/;
         if ($invalid_referer) {
             rewrite     ^/([0-9][0-9][0-9])/mp3/(.*)\.mp3$
                         http://www.zvuki.ru/T/P/$1/mp3/$2;
         }


> 2. Самое правильное решение - на бэкэнде поставить скрипт, на который будут 
> направляться все запросы типа /download2/file.exe. Скрипт проверив что 
> отдавать этому юзеру этот файл можно выдает заголовок с X-Accel-Redirect с 
> патем к файлу /download/file.exe. В nginx location /download/ прописывается с 
> флагом internal, тогда файлы скачать можно будет только через /download2/.

Если не ставить cookies, то скрипт всё равно проверять будет по URI да по 
referrer - а тогда какой смысл нагружать этим бэкенд с дорогими ресурсами? 
Это всё и на nginx проверять можно и нужно.


-- 
Best regards,
Andrew Kopeyko <kaa at ramtel.ru>


More information about the nginx-ru mailing list