Allen's 碎碎念

Allen's 碎碎念

emby 公益服反代

58
2025-01-07

概述

当前很多公益服屏蔽了大陆、香港、日本 ip 访问,手头的甲骨文机子是新加坡的,便动了心思利用其来反代公益服,达到服务端无需梯子的目的。通过 nginx 实现,我本地装的是 nginx proxy manager,原理一致,只是通过界面操作,更加便捷。

操作

在 npm 中新增代理, Domain Names 填写自己定义的子域名,Forward IP 填写公益服对外提供的前端地址,通信方式和端口按照提供的填写。
image-uphj.png

在 SSL 中添加证书,仅选择 HTTP/2 Support 选项。

在 Advanced 标签页,添加如下配置。

location / {
  proxy_ssl_name $server;
  proxy_ssl_server_name on;
  proxy_pass $forward_scheme://$server:$port;
}

点击 Save,新建代理显示 Online,即成功连接配置。

遇到的问题

打开一个视频无法拉动进度条,每次拖动会从开头重新开始。

该问题在 Emby 社区找到了解决办法。这个是由于使用的 Cloudflare DNS 引起的。默认 CF 会使用缓存,通过将缓存等级改为不缓存即可。

前后端分离反代

尝试反代 MisakaF,但推流和界面是分开的,需要将推流部分也纳入 nginx 规则中。类似的还有 pilipili、纸片人等。通过查阅在 github 找到了相关方法。

https://github.com/lateautumn2/MisakaF-nginx-reProxy

在 Advanced 中,需要添加推流地址信息。

location / {
  proxy_ssl_name $server;
  proxy_ssl_server_name on;
  proxy_pass $forward_scheme://$server:$port;
  # 推流地址改成 emby 服务器的
  # your.domain.name 改成你定义的反代地址
  proxy_redirect https://stream1.example.com/ https://your.domain.name/s1/;
  proxy_redirect https://stream2.example.com/ https://your.domain.name/s2/;
  proxy_redirect https://stream3.example.com/ https://your.domain.name/s3/;
}

location /s1 {
  rewrite ^/s1(/.*)$ $1 break;
  # 你需要反代的emby推流地址
  proxy_pass https://stream1.example.com;
  # 更改为 emby 界面地址
  proxy_set_header Referer "https://emby.example.com/web/index.html";
  proxy_set_header Host $proxy_host;
  proxy_ssl_server_name on;
  proxy_buffering off;
}

location /s2 {
  rewrite ^/s2(/.*)$ $1 break;
  # 你需要反代的emby推流地址
  proxy_pass https://stream2.example.com;
  # 更改为 emby 界面地址
  proxy_set_header Referer "https://emby.example.com/web/index.html";
  proxy_set_header Host $proxy_host;
  proxy_ssl_server_name on;
  proxy_buffering off;
}

location /s3 {
  rewrite ^/s3(/.*)$ $1 break;
  # 你需要反代的emby推流地址
  proxy_pass https://stream3.example.com;
  # 更改为 emby 界面地址
  proxy_set_header Referer "https://emby.example.com/web/index.html";
  proxy_set_header Host $proxy_host;
  proxy_ssl_server_name on;
  proxy_buffering off;
}

推流域名跳转

反代垃圾服的时候发现,通过单纯加一个流的代理是不生效的。尝试抓取流发现,请求发的http,但返回的推流是https,而在配置文件中仅仅针对请求的http做了代理,https的接收仍然会直接获取,未达到反代的目的。这种情况下,需要加一次跳转。

location /s1 {
        rewrite ^/s1(/.*)$ $1 break;
        #默认推流地址
        proxy_pass http://stream.example.org/;
        #线路推流地址 =》你的域名
        proxy_redirect https://stream.example.org/ https://your.domain.name/s2/;
        proxy_set_header Referer "https://example.org/web/index.html";
        proxy_set_header Host $proxy_host;
        proxy_ssl_server_name on;
        proxy_buffering off;
    }
 location /s2 {
        rewrite ^/s2(/.*)$ $1 break;
        #线路推流地址
        proxy_pass https://stream.example.org/;
        #纸片人主站
        proxy_set_header Referer "https://example.org/web/index.html";
        proxy_set_header Host $proxy_host;
        proxy_ssl_server_name on;
        proxy_buffering off;
    }