try_files video cache
Andrey Repin
hell-for-yahoo at umail.ru
Sat Feb 9 16:17:37 UTC 2013
Здравствуйте, Уважаемый(-ая, -ое) Алексей Бобок!
АБ> Приветствую.
АБ> Есть элементарная задача, что-то упускаю и не получается решить :)
Тривиально - вы задаёте root, в котором ваш кеш найти невозможно.
АБ> Есть 2 локейшна со стримингом (см. ниже).
АБ> Отдельный скрипт анализирует популярные файлы и копируется популярные файлы
АБ> на SSD в папку /cache/, сохраняя полный путь внутри.
АБ> Т. е.
АБ> /1/www/a.video/v2/147631/files/u147631_94593_1238.mp4
АБ> копируется в
АБ> /cache/1/www/a.video/v2/147631/files/u147631_94593_1238.mp4
АБ> Нужно добавить try_files, который сначала проверит файл в кеше (типа
АБ> /cache/$uri), если нет - отдаст из стораджа.
АБ> ## config cut
АБ> location ~* \.flv$ {
АБ> root /1/www/a.video;
АБ> access_log /var/log/nginx/video.log video;
АБ> flv;
АБ> }
АБ> location ~* \.mp4$ {
АБ> root /1/www/a.video;
АБ> mp4;
АБ> access_log /var/log/nginx/video.log video;
АБ> }
АБ> Как? :)
Решать как-то так:
location @nocache {
root /1/www/a.video;
access_log /var/log/nginx/video.log video;
location .flv { flv; }
location .mp4 { mp4; }
}
location ~* \.(mp4|flv)$ {
root /cache/1/www/a.video;
try_files $url @nocache;
access_log /var/log/nginx/video.log video;
location .flv { flv; }
location .mp4 { mp4; }
}
Предупреждаю - может не заработать. Но идея эта. Пробуйте.
--
С уважением
Andrey Repin (hell-for-yahoo at umail.ru) суббота, 09.02.2013, <20:08>
Подробная информация о списке рассылки nginx-ru