使用Django + nginxstream式传输带有字节范围请求的音乐

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

Django正在对媒体文件进行正确的身份validation,但是django dev服务器不支持范围请求(206部分响应)。 在使用这个configuration之后 ,Nginx直接提供字节范围请求,我证实响应头有内容范围。 不过,我无法将django的请求转发给nginx,以便为内容提供服务。

我试着在Django视图中使用X-Accel-Redirect ,但是如果文件已经被nginx直接提供,响应头文件的内容范围仍然不会如此。

  • Django dev服务器 – 完成身份validation,但没有字节范围支持(响应200)
  • Nginx – 没有身份validation,字节范围请求支持(响应206)
  • Django视图+ X-Accel-Redirect + nginx – 已完成身份validation,但不支持字节范围(响应200)

所以我试图find一种方法来使用Django进行身份validation,并通过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 

这为我解决了。 现在通过nginx与django + streaming进行身份验证已经完成了。