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