MENU

媒体影音库设置反向代理

2023 年 01 月 05 日 • 阅读: 1383 • Index

所需环境:

  • 性能机 VPS-1:宝塔、Nginx、Plex 服务端
  • 反代机 VPS-2:宝塔、Nginx
  • 某个域名指向 VPS-2

宝塔 Nginx 反代

所需环境:

一个性能好的 VPS 装 Plex 进行解码并装宝塔进行初步反代,代号 VPS-1。

一个线路友好的 VPS 装宝塔作为前端用来二次反代,代号 VPS-2。

一个域名如 plex.llzou.com(仅示例,需更改成自己的域名。)指向 VPS-2 的 IP。

1、VPS-1 宝塔 Nginx 设置

网站-添加站点 域名为指向 VPS-2 的域名(plex.llzou.com)。
指向 VPS-2 的域名
在该站点的配置文件中删除对 css 等的缓存,添加如下字段并保存:

删除以下字段:

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

添加以下字段:

    client_max_body_size 5000M;
    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;
    proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;
    proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
    proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
    proxy_cache off;
    proxy_redirect off;
    proxy_buffering off;
    location / {
        proxy_pass http://127.0.0.1:32400/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_ssl_verify off;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

请输入图片描述

2、VPS-2 宝塔 Nginx 设置

网站-添加站点 域名为指向 VPS-2 的域名(plex.llzou.com)。

请输入图片描述

(1)修改 hosts

SSH 连接到 VPS-2,使用你惯用的编辑器打开/etc/hosts 并添加:

VPS-1的IP plex.llzou.com

(2)配置 SSL

为了避免版权问题,建议对流量进行 SSL 加密。

宝塔要求在配置反代前先配置 SSL,设置-SSL-Let’s Encrypt-申请。

成功后复制密钥(KEY)与证书(PEM)到 VPS-1 的 SSL 中(SSL-其他证书-> 粘贴-> 保存)

成功后复制密钥(KEY)与证书(PEM)到 VPS-1 的 SSL 中(SSL-其他证书-> 粘贴-> 保存)

成功后复制密钥(KEY)与证书(PEM)到 VPS-1 的 SSL 中(SSL-其他证书-> 粘贴-> 保存)

两边都建议打开右上角的的强制 HTTPS。

请输入图片描述

(3)配置反向代理

在该站点的配置文件中删除对 css 等的缓存,添加如下字段并保存(请自行修改域名):

删除以下字段:

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

添加以下字段:

    client_max_body_size 5000M;
    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;
    proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;
    proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
    proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
    proxy_cache off;
    proxy_redirect off;
    proxy_buffering off;
    location / {
        proxy_pass https://plex.llzou.com/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_ssl_verify off;
        proxy_http_version 1.1;
        proxy_set_header Host plex.llzou.com;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }

Emby版本:

    client_max_body_size 5000M;
    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;
    proxy_set_header Sec-WebSocket-Extensions $http_sec_websocket_extensions;
    proxy_set_header Sec-WebSocket-Key $http_sec_websocket_key;
    proxy_set_header Sec-WebSocket-Version $http_sec_websocket_version;
    proxy_cache off;
    proxy_redirect off;
    proxy_buffering off;
    location ^~ / {
        proxy_pass https://plex.llzou.com; 
        proxy_set_header Host plex.llzou.com; 
        proxy_set_header X-Real-IP $remote_addr; 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header REMOTE-HOST $remote_addr; 
        proxy_set_header Upgrade $http_upgrade; 
        proxy_set_header Connection "upgrade"; 
        proxy_set_header X-Forwarded-Proto $scheme; 
        proxy_http_version 1.1; 
        add_header X-Cache $upstream_cache_status; 
        add_header Cache-Control no-cache; 
        proxy_ssl_server_name on; 
    }

请输入图片描述

四、Plex 面板设置

如果反代正常,那么从反代的面板网址进入的流量将会经过 VPS-2 的中转并到达 VPS-1。

但是在使用 app.plex.tv 或 APP 等客户端时的流量还会直连到 VPS-1。

如果希望客户端的流量也能被中转,需要在面板中进行如下设置:

设置-> 网络

请输入图片描述

设置-> 远程访问-> 禁用远程访问

请输入图片描述

设置完毕,至此所有流量都将经过 VPS-2 的中转到达 VPS-1。

可在 Web 端播放视频时打开 f12 开发者工具-网络,查看媒体文件的链接是否来自于你的域名。

请输入图片描述

或者在播放视频时打开 VPS-2 的宝塔面板查看流量变化。

疑难解答

1、禁止远程访问后与 Plex 服务器彻底失联怎么办?

问题出在反代的设置上,可使用 端口转发完成初始化的方法通过端口映射在本地连接到 Plex 服务端。

SSH 转发端口

打开电脑 Shell 窗口,运行命令:

ssh root@服务器IP -L 8888:localhost:32400

输入正确的密码后,再去浏览器里打开 localhost:8888/web 进入即可。

2、播放时 Plex 服务端 CPU 占用太高,播放不顺畅。

说明搭建 Plex 服务端的机器 CPU 太弱,无法适应软解的性能需要,建议 Intel E5 四核以上,AMD 两核以上。

或者在设置–转码器里选中“禁用视频流转码”,但这会影响 web 端和某些客户端的播放,不推荐。

3、每天午夜或者有一段时间服务器负载和流量飙升。

这种情况一般出现在媒体文件没有保存在本地,而是通过 Rclone 或 Nfs 挂载的云存储的情况。

可以在设置-预定任务中取消勾选“维护期间执行大量媒体分析”。

4、同样的配置也适用于 Jellyfin、Emby

修改 Nginx 配置文件中对应端口即可

后台管理面板无需配置自定义 URL

返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
歌曲封面
0:00