Здравствуйте, 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@xxxxxxxxx
QWARTA