我正在使用 Django + nginx 构建一个音乐播放器应用程序,为此我需要一个支持字节范围请求的后端。
Django 正在正确验证媒体文件,但 Django 开发服务器不支持范围请求(206 部分响应)。 Nginx 在使用 this configuration 后直接服务字节范围请求,我验证了响应 header 具有内容范围。但是我无法将请求从 django 转发到 nginx,以提供内容。
我尝试使用 X-Accel-Redirect在 django View 中,但响应 header 仍然没有内容范围,如果文件由 nginx 直接提供,则内容范围。
- Django 开发服务器 - 身份验证完成但不支持字节范围(响应 200)
- Nginx - 无身份验证、字节范围请求支持(响应 206)
- Django view + X-Accel-Redirect + 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 流式传输已经完成。
关于python - 使用 Django + nginx 以字节范围请求流式传输音乐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23301639/