admin 发表于 2025-9-22 10:03:52

emby反代域名播放失败的原因及解决方法(EMBY通过反代后视频加载缓慢解决)

由于emby服务器使用的ipv6搭建的,出租房wifi不支持ipv6;使用服务器ipv6转ipv4后出现,
emby可以打开,但是无法播放视频的情况一直在加载视频;最后把错误日志发给gpt后给出了解决方案。




gpt给出的结果:
明白了⚡ 现在的问题不是 页面访问,而是 视频流一直加载。结合你提供的日志和情况,我判断主要有两个可能:

反代配置缺少对流媒体 (Range 请求 + Chunked + Upgrade) 的支持
Emby 播放视频需要断点续传(Range header),如果 Nginx 配置里没处理好,会导致无限加载。

IPv6 → IPv4 转发时,流量正常到达,但 Nginx 没有把流媒体请求完整转发
比如 .ts、.mkv、.mp4 这类文件请求被缓存/截断。

把下面的配置加载到宝塔的配置文件就可以了,里面的反代不需要填写,配置文件里面已经全部配置好了
server {
    listen 端口自己填;
    server_name 159.75.238.254;

    access_log/www/wwwlogs/emby_access.log;
    error_log   /www/wwwlogs/emby_error.log;

    location / {
      #使用阿里云 DNS 动态解析 IPv6(防止 IP 改变后反代失效)
      resolver 223.5.5.5 valid=300s ipv6=on;
      set $backend "http://emby.wltxdn.cn:端口自己填";
      proxy_pass $backend;

      #使用 HTTP/1.1 保持长连接(视频播放必备)
      proxy_http_version 1.1;

      # 转发头信息
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      # 关键:支持视频流 (Range 请求)
      proxy_set_header Range $http_range;
      proxy_set_header If-Range $http_if_range;
      proxy_no_cache $http_range;
      proxy_cache_bypass $http_range;

      # 避免 Nginx 缓冲影响流媒体
      proxy_request_buffering off;
      proxy_buffering off;

      # WebSocket (Emby 控制端需要)
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";

      # 支持大文件
      client_max_body_size 0;
    }
}





admin 发表于 2025-9-29 09:15:06

由于使用的是ddns解析的域名;会出现过几天后不能访问的情况;


问题根源(遇到“几天后就断、重启才恢复”的 99% 原因)

emby.wltxdn.cn 是个域名,Nginx 启动时只解析一次 IP,解析完就“死记”住了这个 IP。
👉 如果后端 Emby 穿透、DDNS、服务器 IP 变了,Nginx 不会重新解析,连接自然就失效了。
重启 Nginx 会触发重新解析,所以“重启就好了”

解决办法
添加三行代码,让服务器查询ip是否变化
location / {
      # ✅ 动态解析 emby 域名 IP,避免重启
      resolver 8.8.8.8 valid=300s;
      set $backend "http://emby.wltxdn.cn:5255";
      proxy_pass $backend;

      proxy_http_version 1.1;📌 说明一下这几行:
[*]resolver 8.8.8.8 valid=300s;:告诉 Nginx 每 300 秒重新解析一次域名 IP(可以改成你的本地 DNS)
[*]set $backend "http://emby.wltxdn.cn:5255";:用变量让 Nginx 不提前解析
[*]proxy_connect_timeout / proxy_read_timeout:防止长时间无响应导致连接卡死

页: [1]
查看完整版本: emby反代域名播放失败的原因及解决方法(EMBY通过反代后视频加载缓慢解决)