Что необходимо для начала настройки видео-CDN.
2. Лучшая на рынке защита от хотлинков.
Чтобы начать настройку, необходимо ответить на несколько уточняющих вопросов.
Для видео-файлов и файлов изображений используются две разных сети CDN.
CDN для видео работает через 302-й редирект. Видео хранится на наших серверах, кол-во копий определяется популярностью файлов - для малопопулярных копий мало, для сильно популярных - много. Сначала запрос попадает на сервер редиректора (их несколько, домен для CDN может иметь несколько IP. Редиректор делает проверки на предмет доступности файла и разрешения доступа (реферер + ключ) и отдает 302-й редирект на стрим сервер, который и будет обслуживать данный конкретный запрос, сервер выбирается исходя из пинга к клиенту и загрузки данного сервера и его аплинков.
Итого, для работы cdn надо иметь домен, который будет указывать на сервера редиректоров (можно один, но лучше несколько, для распределения нагрузки и отказоустойчивости).
У нас есть инструменты для автоматизации добавления новых файлов, на вашем сторедже нужно чтобы работал http сервер для скачивания файлов, и rsync-сервер для получения рекурсивного листинга директории с файлами.
Сначала импортируются все файлы, импорт происходит через web форму POST-запросом - в базу отправляется URL файла, его имя внутри cdn и опциональные параметры: размер, контрольные суммы и т.д. CDN импортирует файл на один из серверов, и после этого им можно пользоваться, после успешного импорта файл на вашем сторедже уже можно удалять.
Структуру можно сохранить или модифицировать как угодно, на стрим-серверах файл хранится с оригинальным именем, но без каталога, каталог используется только на редиректоре для определения конкретного файла.
Однажды импортированный файл изменить на ходу пока что нельзя - нужно или импортировать новый (под другим именем) или сначала удалить старый и импортировать заново.
Пример конфигурации для rsync (используется для автоматического добавления новых файлов)
Есть несколько возможных настроек защиты от хотлинка: можно проверять реферер; можно подписывать URL; в подписи можно опционально указать время жизни, IP-адрес(а), для которых подпись действительна, и максимальное количество IP-адресов, которые могут использовать данный URL.
Теперь дополнительно может проверяться Cookie (имя можно выбрать любое) - если его значение совпадает со значением ключа - то запрос действительный, даже если нет привязки по IP или нет рефа (если реф есть, но не совпадает, то запрос будет отклонен). Если привязка по IP не используется, то отсутствие правильного Cookie не будет отклонять запрос только если есть действительный (valid) реф.
В общем, любой из трех проверок (правильный IP, наличие правильного Cookie или правильного рефа) достаточно, чтобы запрос был обслужен - хотлинк не может подделать ни один из этих параметров.
Eсть возможность указывать callback URL, который будет запрашиваться после успешного (или неуспешного) импорта, для того, чтобы ваш скрипт мог сделать у себя пометку в базе, что файл готов к использованию.
Callback is optional url fetched after file is imported returning importing status in parameters: '?status=(fail|success)&message=Some message'. т.е. можно указать callback: