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

标签 python django nginx media

我正在使用 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/

相关文章:

python - 从父文件夹导入模块

python - 如何在 Python 中将指针指定为函数的参数?

python - Django、PIP 和 Virtualenv

python - 具有三个需要多对多字段的表的 Django 应用程序

nginx - 在 AKS 中的现有 Nginx 入口 Controller 上设置 TLS

python - 使用lxml查找根节点名称

python - pyparsing 性能和内存使用

python - 主键字段上的 serialize=False 是什么意思?

amazon-web-services - 如何在亚马逊 Linux 发行版上安装 nginx 1.9.15

docker - 可以使用 Onlyoffice 进行身份验证吗?