【问题标题】:Nginx Range Request in URL Query ParametersURL 查询参数中的 Nginx 范围请求
【发布时间】:2020-01-05 02:10:49
【问题描述】:

我正在构建一个 HLS/DASH 流媒体服务器,今天我发现使用具有范围请求的单个大文件比使用许多小文件更好 - 这就是 Netflix 和 YouTube 目前正在做的事情。

但是有一个问题;因为我有一个不同的视频 CDN 域和实际的播放器页面(例如 netflix.com - nflxvideo.net)CORS 进入并在每个请求中发送一个 OPTION 请求。因为播放器发送了很多请求,这会浪费字节。

Netflix(也使用 nginx)和 YouTube 通过在 URL 或查询中发送范围来解决此问题,因此浏览器不会发送 OPTION 请求: https://xx.nflxvideo.net/range/0-64209238?o=...

我正在尝试在 Nginx 中实现相同的目标,但 4 小时内我找不到任何方法。 我们将文件存储在服务器中,因此我们正在使用 sendfile。

谢谢!

【问题讨论】:

  • 据我所知,没有标准的方法可以做到这一点。您需要编写代码来解析 URL 并重新调整指示的字节。
  • 我目前正在解析 URL,但找不到将范围传递给 try_files 或其他任何内容的方法。

标签: nginx video-streaming http-live-streaming


【解决方案1】:

我找不到如何做到这一点,但为了不浪费 OPTIONS 请求资源的主要目标,有 Access-Control-Max-Age 标头用于缓存 OPTIONS 请求。

基本上将其设置为 Firefox 的最大 86400 秒(24 小时) 并且它正在工作。

我之前跳过了这个标题,因为它在 Chrome 中是 10 分钟,但显然,自 Chrome 76 以来它已增加到 2 小时。这已经足够了,因为我们视频的平均持续时间是 100 分钟。

有关标头的更多信息是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多