You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache经Cloudflare代理后无法向Safari提供MP4文件求助

Apache+Cloudflare环境下iOS Safari无法加载MP4视频的解决方案

我将MP4视频文件托管在Capnel的Apache服务器上,该服务器通过Cloudflare代理提供服务。视频在非苹果设备的浏览器中可正常加载,但在苹果Safari及其他苹果设备浏览器中完全无法打开。

问题根源

Safari请求视频时会发送Range请求头:无代理情况下Apache会返回206状态码,经Cloudflare代理后本应返回200状态码,但文件被Cloudflare缓存后,实际返回的是206状态码,导致iOS设备无法正常处理媒体请求。

必要背景

iOS设备要求托管媒体文件的HTTP服务器必须支持字节范围请求(Byte-range requests,又称内容范围/部分范围请求),以此实现视频的随机播放功能。多数HTTP 1.1服务器原生支持该请求,但部分服务器与Cloudflare代理的适配存在问题。

你可以通过以下curl命令验证服务器是否支持字节范围请求:

curl -I --range 0-99 http://example.com/test.mp4

已知测试结果

  • 将Web服务器替换为LiteSpeed或OpenLiteSpeed,搭配Cloudflare代理后,同一视频可正常加载
  • 关闭Cloudflare代理后,无论使用Apache还是LiteSpeed/OpenLiteSpeed,视频均能正常加载,服务器返回206状态码

已尝试但无效的方案(仅在LiteSpeed上生效)

  • 禁用Apache的mod_deflate模块
  • 配置跳过MP4文件的Cloudflare缓存

恳请各位提供适用于Apache+Cloudflare环境的解决方案。


内容的提问来源于stack exchange,提问作者Laxman Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:02:43