Re[4]: Продажа контента

Дугин Сергей drug at qwarta.ru
Sat Apr 29 00:34:01 MSD 2006


Здравствуйте, Igor.

Вы писали 29 апреля 2006 г., 0:17:58:

> On Sat, 29 Apr 2006, Дугин Сергей wrote:

>>>>>> Появилась задача сделать сервис с платными подписками на доступ к
>>>>>> контенту. Раньше делал просто апач+http auth и все было красиво... но
>>>>>> теперь захотелось цивилизованно подойти к процессу с сделать нормальную
>>>>>> форму с логином и паролем... вот только не знаю, как красивее
>>>>>> организовать отдачу контента (файлы по 3-180Мб) клиентам из
>>>>>> members-зоны... хояется сохранить возможность докачки и всякие там
>>>>>> прелести типа ranges для многопоточного скачивания.... делать
>>>>>> предполагается, как вы, наверное, уже догадались на apache+nginx...
>>>>>> хотя, может быть, апач и не понадобится... но вопрос, пока, в следующем:
>>>>>> подскажите правильный путь к организации раздачи контента только тем,
>>>>>> кто заплатил/авторизовался.
>>>>
>>>>> По клику на ссылке download вызывается скрипт. Он, на основании любых
>>>>> возможных критериев, определеяет имеет-ли этот юзер право на скачивание
>>>>> данного файла. Если имеет - скрипт выдает X-Accell-Redirect с
>>>>> перенаправлением на internal location на фронтенде (nginx). Дальше файл
>>>>>  качается клиентом средствами nginx (с докачкой и т.д.).
>>>>
>>>> А можно маленький примерчик как перл выдает X-Accell-Redirect с
>>>> перенаправлением на internal location ?
>>>> И это обязательно на fast_cgi или можно и просто перл?
>>
>>> Есть конфигурация
>>
>>>      location  / {
>>>          proxy_pass ...
>>>          или
>>>          fastcgi_pass ...
>>>      }
>>
>>>      location  /download/ {
>>>          internal;
>>>          root   ...
>>>      }
>>
>>> Запрос уходит на бэкенд, бэкенд возвращает среди прочего заголовок
>>> "X-Accel-Redirect: /download/file". После этого запрос обслуживается в
>>
>>>      location  /download/ {
>>>          ...
>>>      }
>>
>>> Из ответа бэкенда при этом наследуются заголовки:
>>
>>> Set-Cookie
>>> Content-Disposition
>>> Cache-Control
>>> Expires
>>> Accept-Ranges
>>
>> Ну так ведь все эти заголовки юзер сможет увидить при скачивании через
>> тот же reget и потом раздать на весь инет его и все кт осмогут сделать
>> такой же заголовок смогут скачивать то за что было заплачен ов
>> единичном экземпляре.
>>
>> Как в
>>>      location  /download/ {
>>>          ...
>>>      }
>> делать ограничение по IP на лету не перегружая каждый раз конфиг nginx
>> и как можно считать сколько юзер скачал чтобы теоретически понять
>> скачал он все или нет?

> Это не задача nginx'а. Задача nginx'а - получить от бэкенда URI и отдать
> его клиенту. Проверка IP, кук, времени скачивания и прочая - это задача
> бэкенда. Нравится бэкенду запрос - он отдаёт редирект, не нравится - 403
> или ещё чего. nginx лишь гарантирует, что, даже зная точное имя
> /download/uri, в обход бэкенда файл не скачают.

> Игорь Сысоев
> http://sysoev.ru

Все, спасибо, дошло.


-- 
С уважением,
 Дугин Сергей                          mailto:drug at qwarta.ru
 QWARTA






More information about the nginx-ru mailing list