1

我在我的网站上提供仅供会员观看的付费视频。目前,我正在通过 PHP 脚本进行整个身份验证和视频流传输,但是它往往会使用大量资源,我想使用 nginx 来实际提供文件。为此,我发现您必须X-Accel-Redirect从您的 PHP 脚本发送标头,然后将文件交给 nginx。

但是,有一个问题,要流式传输的视频的 URL 不是由与该站点相同的服务器提供服务。它来自我的其他网站之一,该网站完全位于不同的 VPS 服务器(和域)上。无论如何,我尝试了这个简单的测试脚本:

<?php

header('X-Accel-Redirect: http://other-site.com/protected/videos/test.mp4');

但我不知道在我的 nginx 配置中使用什么来提供文件http://other-site.com/protected/videos/test.mp4,同时仍然对用户隐藏原始视频 URL。

当我访问上面的测试脚本时,nginx 返回 a404 Not Found并且错误日志有这样的条目:

open() "/var/www/site.com/web/publichttp://other-site.com/protected/videos/test.mp4" failed (2: No such file or directory)

因此,nginx 显然试图解析http://other-site.com/protected/videos/test.mp4到站点文档根目录中的路径,而不是识别它是另一个位置的资源并只是“代理”文件。

有人有任何关于让它工作的提示吗?

4

2 回答 2

1

我相信您正在尝试代理该 mp4。我猜问题出在nginx服务器的配置上。

看看这个模块:

http://wiki.nginx.org/HttpProxyModule

于 2014-01-09T16:45:32.327 回答
0

使用 Nginx 通过 X-Accel-Redirect 转发静态文件通常是针对本地托管资源完成的......但我确实找到了这个,我认为这就是你要找的东西:Use Nginx to proxy files from remote location using X -加速重定向

于 2016-09-20T02:02:37.630 回答