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

Laravel无法播放Nginx服务器外部视频的问题求助

解决Laravel网站播放外部Nginx视频链接的问题

问题场景

现有一台存储视频的Nginx服务器,视频链接为 http://1.1.1.1/video.mp4;在另一套Laravel搭建的网站中,尝试通过控制器传递该外部链接到Blade模板播放视频,但使用外部链接时无法播放,改用内部链接(如/video/video.mp4)则正常。

相关代码如下:

控制器代码

public function index(Request $request)
{
    $url = url('http://1.1.1.1/video.mp4');
    return view('blog.index', compact('url'));
}

Blade模板视频模块代码

<video poster="video.jpg" src={{ $url }} ></video>

排查与解决方案

1. 修正URL传递逻辑

Laravel的url()函数会将传入的外部URL拼接为当前站点的URL(例如将http://1.1.1.1/video.mp4转为http://你的Laravel域名/http://1.1.1.1/video.mp4),导致链接无效。直接传递原始URL即可:

public function index(Request $request)
{
    $url = 'http://1.1.1.1/video.mp4';
    return view('blog.index', compact('url'));
}

2. 修复模板标签属性格式

Blade模板中src={{ $url }}未加引号,可能导致浏览器解析错误,需补充双引号:

<video poster="video.jpg" src="{{ $url }}"></video>

3. 配置Nginx跨域规则(CORS)

若Laravel站点与Nginx视频服务器为不同域名,浏览器会因跨域策略阻止视频加载。在Nginx对应视频文件的server块中添加以下配置:

location /video.mp4 {
    # 替换为你的Laravel站点域名,生产环境不建议用*
    add_header Access-Control-Allow-Origin "http://你的Laravel站点域名";
    add_header Access-Control-Allow-Methods "GET, OPTIONS";
    add_header Access-Control-Allow-Headers "Range";
}

配置后重启Nginx服务。

4. 验证文件权限与Nginx配置

  • 确保Nginx服务器上的video.mp4文件权限为644,所属用户组为Nginx运行用户(如www-data);
  • 检查Nginx的server配置中,是否通过root或alias正确指向视频存储目录,且未设置访问限制。

内容的提问来源于stack exchange,提问作者Mehdi Bakhtiari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:47:25