nginx反向代理后视频无法访问

ngxin 配置了反向代理,后端部署了 php 程序,但是现在访问视频在 ios 上面无法进行播放,在安卓正常,请问怎么解决呢?

        location /api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://localhost:8080/;
        }

请求视频地址如下 https://xx.com/api/file/video/20230401_411915618564964741.mp4

附言 1  ·  1年前

在微信小程序播放提示:MEDIA_ERR_SRC_NOT_SUPPORTED

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 12

这种情况一般是因为 iOS 设备不支持该视频的编解码方式,导致无法播放。需要确保视频编解码格式和 iOS 设备的兼容性。

此外,如果视频文件比较大,可能会存在传输过程中出现问题的风险。你可以尝试增加 nginx 的缓存配置,将视频暂存在 nginx 中,以提高用户体验。

下面是一个简要的 nginx 缓存配置示例,你可以根据自己业务的具体情况进行调整:

location /api/file/video/ {
    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=video_cache:10m inactive=60m;
    proxy_cache_key "$scheme$request_method$host$request_uri";
    proxy_cache_valid 200 60m;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    proxy_buffers 256 16k;
    proxy_busy_buffers_size 512k;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://localhost:8080/;
}

在这个配置中,我们使用了 ngx_http_proxy_module 插件提供的缓存功能,并将缓存文件存储在 /data/nginx/cache 目录下。我们通过 proxy_cache_path 指令来指定缓存路径和相关参数。

同时,我们还指定了一些缓存的相关参数,例如:proxy_cache_valid 200 60m 表示在接收到 200 响应码时进行缓存,并将缓存文件保存 60 分钟。proxy_cache_revalidate on 表示如果源服务器返回了 Last-Modified 或者 ETag 字段,将在缓存过期之前对源服务器进行重新验证。

此外,我们还指定了一些其他参数,例如:proxy_busy_buffers_size 512k,proxy_buffers 256 16k 等,以帮助 nginx 更好地处理缓存数据。

你可以根据实际情况对这个配置进行微调,以提高视频访问的稳定性和用户体验。

1年前 评论
sunny123456 (楼主) 1年前
1年前 评论
sunny123456 (楼主) 1年前

强制关闭 Accept-Ranges 响应头:

location /api/ {
    ...
    proxy_set_header Accept-Encoding "";
    proxy_pass_header Accept-Ranges;
    proxy_set_header Range "";
    ...
}
1年前 评论
sunny123456 (楼主) 1年前
隐德莱希 (作者) 1年前
sunny123456 (楼主) 1年前
隐德莱希 (作者) 1年前
sunny123456 (楼主) 1年前
sunny123456 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!