ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



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



 




Copyright © Lexa Software, 1996-2009.