Php 通过nginx';s";“X-Accel-Redirect”;不在安卓上工作

Php 通过nginx';s";“X-Accel-Redirect”;不在安卓上工作,php,nginx,http-headers,webserver,mp4,Php,Nginx,Http Headers,Webserver,Mp4,问题很简单。我试图通过nginx的“X-Accel-Redirect”头使用php流式传输文件,因为让nginx处理所有事情比使用php流式传输成本更低 我在pc和Android上都使用Chrome进行测试 假设我在公共根目录中有一个文件:example.com/video.mp4这在pc和Android上都可以正常工作 但是,如果我尝试流式传输一个标题为“X-Accel-Redirect”的文件(假设它是私有的,并且不能在公共目录中),请使用以下代码: header('Content-Type

问题很简单。我试图通过nginx的“X-Accel-Redirect”头使用php流式传输文件,因为让nginx处理所有事情比使用php流式传输成本更低

我在pc和Android上都使用Chrome进行测试

假设我在公共根目录中有一个文件:
example.com/video.mp4
这在pc和Android上都可以正常工作

但是,如果我尝试流式传输一个标题为“X-Accel-Redirect”的文件(假设它是私有的,并且不能在公共目录中),请使用以下代码:

header('Content-Type: video/mp4');
header('X-Accel-Redirect: /path/to/protected/directory/video.mp4');
它可以在pc上运行,但不能在Android上运行。请求标题看起来完全相同,我真的不知道该搜索什么


我还检查了两台设备上的标题,它们似乎是相同的。

是的,但是响应标题是相同的吗?例如,“站点的移动版本”或类似的东西没有特殊的标题?可能有一些愚蠢的用户代理特定代码在运行?或者可能移动浏览器不理解响应标题,而桌面浏览器理解?没有用于移动或代理检测的特殊标题。nginx不检查用户代理。注意:视频在Android上显示,但为空,无法播放。我已经将Android上的Chrome应用程序连接到pc上,控制台没有显示任何错误。显然,问题在于Android不喜欢你的服务器在做什么。确保(通过谷歌)“X-Accel-Redirect”对Android浏览器有意义。例如,他们可能会禁用手机上的重新定向,作为一种安全措施,以防止欺诈网站重新定向到未要求的数据流失内容。
/path/to/…
看起来像
https://www.example.com/protected/dir/video.mp4
?请确保您的重定向路径是https类型,因为这可以解决一些访问问题。您是否找到了解决此问题的方法?有相同的问题,但与.mp3文件。