我有一个上游 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 从文件系统提供文件。然后我还必须处理提供延迟的块列表,这似乎很麻烦。
欢迎任何建议。