У меня есть восходящий поток HLS, который мне нужно прокси для внешнего мира. Провайдер не хочет, чтобы у меня было более одного подключения одновременно. Они принципиально не хотят заниматься проблемами инфраструктуры.
Я успешно использовал proxy_pass для файлов .ts, chunklist и playlist, и я успешно кэширую мультимедийные файлы, чтобы трафик на вышестоящий сервер находился на таком уровне, как если бы это были 1/2 пользователя.
Проблема в том, что когда я пытался кэшировать файл списка фрагментов (всего на 1 секунду), поток иногда задерживался / зависал. Если я этого не сделаю, то исходящий сервер сильно пострадает (я полагаю)?
Должно быть что-то простое, чего мне не хватает.
Между прочим, задержка не очень важна. Это может иметь значительную задержку.
Моя текущая конфигурация:
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
location ~ ^/(.*pla.*) {
proxy_pass https://upstream-provider.com/$1;
proxy_ignore_headers Cache-Control;
proxy_cache_valid any 5s;
proxy_hide_header Cache-Control;
add_header Cache-Control "public, max-age=5";
proxy_cache edge-cache;
}
location ~ ^/(.*chunklist.*) {
proxy_pass https://upstream-provider.com/$1;
proxy_ignore_headers Cache-Control;
proxy_cache_valid any 1s;
proxy_hide_header Cache-Control;
add_header Cache-Control "public, max-age=1";
proxy_cache edge-cache;
}
location ~ ^/(.*media.*) {
proxy_ignore_headers Cache-Control;
proxy_cache_valid any 2m;
proxy_hide_header Cache-Control;
add_header Cache-Control "public, max-age=20";
proxy_cache edge-cache;
}
Есть ли способ заставить мой nginx загружать файлы ts / m3u8 и обслуживать их с задержкой в несколько секунд, чтобы можно было заполнить кеш?
Я думал о написании небольшого сервиса, который обрабатывает эту логику, помещает его в файловую систему и заставляет nginx обслуживать файлы из файловой системы. Тогда мне также придется обрабатывать предоставление отложенного списка чанков, что кажется проблемой.
Любые советы приветствуются.