使用Django+nginx以字节范围请求流式传输音乐



我正在用Django+nginx构建一个音乐播放器应用程序,为此我需要一个支持字节范围请求的后端。

Django正在正确验证媒体文件,但Django-dev服务器不支持范围请求(206部分响应)。Nginx直接为字节范围请求提供服务。使用此配置后,我验证了响应标头具有内容范围。然而,我无法将django的请求转发到nginx,以提供内容。

我尝试在django视图中使用X-Accel-Rerect,但响应标头的内容范围仍然不像nginx直接提供文件时那样。

  • Django dev-server-已完成身份验证,但不支持字节范围(响应200)
  • Nginx-无身份验证,字节范围请求支持(响应206)
  • Django视图+X-Accel-Rerect+nginx-已完成身份验证,但不支持字节范围(响应200)

因此,我试图找到一种使用Django进行身份验证的方法,并通过nginx或其他静态文件服务器为字节范围请求提供支持。

response = HttpResponse(content_type = mimetype, status=206)
response['Content-Disposition'] = "attachment; filename=%s" % 
                                         (fileModel.FileName)
response['Accept-Ranges'] = 'bytes'
response['X-Accel-Redirect'] = settings.MEDIA_URL + '/' + fileModel.FileData.MD5
response['X-Accel-Buffering'] = 'no'
return response

这对我来说是成功的。现在,django+nginx流媒体的身份验证已经完成。

最新更新