Появилась задача сделать сервис с платными подписками на доступ к
контенту. Раньше делал просто апач+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
Игорь Сысоев
http://sysoev.ru