在搜索nginx位置之前,能否从后端服务器检索并存储文件?

在搜索nginx位置之前,能否从后端服务器检索并存储文件?,nginx,nginx-location,Nginx,Nginx Location,问题 我正在使用Nginx Plus中的HLS模块处理流式.mp4文件,使用以下配置: location /hls { hls; hls_fragment 10s; hls_buffers 10 10m; hls_mp4_buffer_size 1m; hls_mp4_max_buffer_size 10m; alias /var/www/vod/cache; } 当.mp4文件出现

问题

我正在使用Nginx Plus中的HLS模块处理流式.mp4文件,使用以下配置:

    location /hls {
        hls;
        hls_fragment 10s;
        hls_buffers 10 10m;
        hls_mp4_buffer_size 1m;
        hls_mp4_max_buffer_size 10m;
        alias /var/www/vod/cache;
    }
当.mp4文件出现在
/var/www/vod/cache
中时,一切正常。当客户端请求
http://example.com/hls/file.mp4.m3u8
HLS模块动态生成m3u8播放列表并返回

但是,我不希望将所有mp4文件都存储在流式服务器上,而是将文件存储在后端存储服务器上。理想情况下,mp4文件只能从存储服务器检索,并在客户端请求特定视频时本地存储(稍后由cron作业删除)。使用proxy_store,我能够检索mp4文件,并使用如下配置本地存储它们:

    location @fetch_content {
        internal;
        rewrite ^/hls(.*).mp4.m3u8$ $1.mp4 break;
        proxy_pass         http://example-storage.com;
        proxy_store        on;
        proxy_store_access user:rw group:rw all:r;
        proxy_temp_path    /tmp;
        root /var/www/vod/cache;
    }
使用proxy_pass的问题在于nginx直接将mp4文件返回给客户端,而不是m3u8播放列表

是否可以让nginx检索并存储mp4文件,然后使用HLS模块生成m3u8播放列表文件?或者另一种方式,我是否可以检查mp4文件是否存在,如果未找到,则检索并存储它,然后点击/hls位置,该位置将使用hls模块来传输文件


由于这是Nginx Plus,我无法编写模块。我只能使用包含的模块,请参见此处

Nginx Plus包含第三方,我能够在定向到/hls位置之前使用Lua从后端服务器检索mp4文件。

我不认为已经在那里实现了这种非平凡和非正统的逻辑;-)为什么不直接将远程服务器装载为磁盘卷?让nginx认为所有文件都是本地的?