EMBY通过反代后视频加载缓慢解决


avatar
铭心 2024-10-16 149

 

Emby 反代后外网访问慢的解决方案

由于一台服务器上部署了多个服务,所以 Emby 只能通过域名区分进行访问。为了解决这个问题,我通过 Nginx 对 Emby 进行反向代理。然而,反代后发现 Emby 在内网可以瞬间加载视频,但在外网加载速度非常慢,甚至会出现视频未播放完就跳跃的问题。

问题描述

通过抓包分析发现,Nginx 反代 Emby 后,请求媒体的响应状态码是 200;而在内网直接访问(与 Emby 在同一网段)时,请求媒体的响应状态码是 206

  • Nginx 反代 Emby,此时请求视频媒体的响应状态码是 200:

    Nginx 反代 200 状态码
  • 家里直接访问(与 Emby 在同一网段),此时请求视频媒体的响应状态码是 206:

    内网访问 206 状态码

状态码解释

  • 200 OK:表示请求成功,服务器已成功处理了请求。对于 GET 请求,响应包含所请求的资源。
  • 206 Partial Content:表示服务器已成功处理了部分 GET 请求。通常用于支持范围请求,客户端可以请求资源的一个或多个部分。

解决方案

经过排查发现,这是因为 Nginx 反代 Emby 时进行了缓存,并且不允许只处理部分请求。解决方法是在 Nginx 反代配置中加入如下配置:

proxy_buffering off;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;

加入上述配置后,请求视频媒体将返回状态码 206,此时外网观看视频将和内网一样可以立即播放,不会出现跳跃的问题,且拖动进度条后不需要等待很久的加载时间。

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1usz1yhdm4zlh

暂无评论

发表评论
OωO表情