在 nginx 上禁用 206 部分内容响应

JuC*_*lot 8 nginx http-headers html5

我有一个使用视频标签的 HTML5 网络应用程序。根据用户的操作,视频的不同部分将作为响应播放。此视频不超过 5MB。

我需要在客户端上完全下载此视频,否则如果要播放的部分在视频末尾,用户将不得不等待缓冲。实际上,浏览器的行为是询问是否支持范围请求并从我的服务器 nginx 获取 HTTP 206 部分内容响应。

我找到了一种方法来做我想做的事情,使用 xhr2 将整个视频下载为 BLOB。但是,我想知道对于不支持 xhr2 的浏览器,是否有可能让 nginx 拒绝范围请求并发送经典的 HTTP 200 响应,以便浏览器获取整个视频。

那可能吗?非常感谢您的帮助!

Mic*_*ton 9

设置max_ranges为 0。这需要 nginx 1.1.2 或更高版本。

例子:

location ~ \.mp4$ {
    max_ranges 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这正是我要找的。不幸的是,这个想法不是我的问题的正确答案,因为没有范围请求加载的 HTML5 视频是不可搜索的:http://stackoverflow.com/questions/8088364/html5-video-will-not-loop。我不知道,我会尝试寻找其他想法。 (2认同)