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

时间:2014-04-25 19:41:34

标签: python django nginx media

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

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

我尝试在django视图中使用X-Accel-Redirect但仍然没有响应标头的内容范围与文件直接由nginx提供的方式相同。

  • Django dev服务器 - 完成身份验证但没有字节范围支持(响应200)
  • Nginx - 无身份验证,字节范围请求支持(响应206)
  • Django view + X-Accel-Redirect + nginx - 身份验证完成但没有字节范围支持(响应200)

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

1 个答案:

答案 0 :(得分:7)

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进行身份验证验证。