Nginx的proxy_cache /光油 – 并行请求触发多个请求后端?

我正在寻找一个HTTP反向代理,将以高性能的方式处理HTTP实时stream媒体用例。 假设文件/碎片大小高达4MB,同一文件的客户请求的持续负载非常接近(请求到达,而后端满足第一个请求)。

CDN服务将不会在这里使用。

在下面的每个Nginx和Varnish的事件中发生了什么(请插入你认为更合适的另一个解决scheme)?

  1. 客户端1请求反向代理(proxy_cache或Varnish),文件不被高速caching(MISS)。
  2. 代理向后端发出请求,并尝试填充本地caching并将响应传递给Client1
  3. 当Client1的请求正在被服务(在代理完成之前)时,其他客户对同一个文件的并发请求。

目标是:

  1. 代理将在从后端检索文件时阻止其他请求。
  2. 代理将在数据到达时同时为所有正在等待的客户端提供服务(当数据到达时,不是在整个文件被缓冲后)。
  3. 对于特定的文件,在任何给定时间只有一个后端请求会被创build。 所有的客户端都应该由来自后端的共享响应来提供服务。 例外情况是,如果客户端针对不同的范围进行HTTP范围请求。

哪种解决scheme最适合在像这样要求更大的文件? 如果有任何关键的configuration设置,以达到预期的效果,请分享。

谢谢!