增加Range请求的支持

为什么需要支持 Range 请求?

当客户端(如浏览器或App)播放视频时,通常不会一次性加载完整内容,而是使用 HTTP Range 请求按需请求部分字节(如前几秒),从而支持:

  • 快速启动(只加载开头几字节)
  • 拖动进度条时按位置请求
  • 网络不佳时逐段加载
  • 实现断点续传和边下边播

如果服务器或代理(如 Nginx)不正确支持 Range,客户端将收到 200 OK 而不是 206 Partial Content,导致播放器无法播放或无法拖动


🛠 Nginx 反向代理时如何正确支持 Range 请求?

当使用 Nginx 作为反向代理时,为了确保客户端能正常播放视频流,需要在配置文件中添加以下设置:

location / {
    proxy_pass http://backend_server;

    # 增加的配置 - 开始
    proxy_set_header Range $http_range;
    proxy_pass_request_headers on;
    proxy_buffering off;
    # 增加的配置 - 结束

    # 其他配置无需修改
    ...
}

✅ 检查是否生效

你可以使用命令测试是否正确返回 206 Partial Content

curl -I -H "Range: bytes=0-1" http://your-domain/icon-folder.png

返回应包含:

HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1/12345678
Accept-Ranges: bytes

💡 总结

只要确保:

  • 客户端发送的 Range 请求头被转发到MT Photos服务端
  • Nginx 不做缓存、不压缩、不隐藏响应头

就可以正常支持断点播放、快进快退和视频预加载。


Copyright © 2025 杭州相册家科技有限公司 All Rights Reserved

隐私协议软件许可及服务协议

浙公网安备 33019202000625号浙ICP备2022014580号