原文地址

前提工作

1.一个性能强劲的vps装plex作为后端,可以进行解码等。(我们叫它vps-1)
2.一个线路比较好的vps作为前端,用来作为二次反代。(我们叫它vps-2)
3.一个域名,把vps-2的ip解析到域名上面待用。
4.安装docker和docker-compose(不懂的看这文章)
5.docker-compose安装Nginx Proxy Manager(不懂的看这文章)

正式开始安装

在vps-1上面操作

1.在Nginx Proxy Manager创建一个反向代理(这个域名是上面步骤3的域名,假设前提工作解析的域名是 plex.domain.com)
反代ip指向本机ip端口填写32400(注意:不要填写127.0.0.1,有可能指向docker内部,我没有测试过)
注意:申请证书,开启https(两台vps使用的证书要一模一样,我使用的是泛域名证书,不是泛证书的自行解决)
2.SSH连接本机(默认Nginx Proxy Manager是安装上面5的步骤安装的,有安装不一样的,按自己的实际情况更改)

cd /root/docker_data/docker-compose/NginxProxyManager/data/nginx/proxy_host

查看目录下的配置文件,每一个反向代理都会对应一个x.conf(x代表数字,下方自行更换成你的数字)

ls
nano x.conf

添加文本内要添加的代码,ip替换成自己的。

# ------------------------------------------------------------
# plex.domain.com
# ------------------------------------------------------------


server {
  set $forward_scheme http;
  set $server         "127.0.0.1"; #此处是你反代执行的IP,即本机的IP,请勿用127.0.0.1
  set $port           32400;

  listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443 ssl http2;


  server_name plex.domain.com;


  # Custom SSL
  ssl_certificate /data/custom_ssl/npm-2/fullchain.pem;
  ssl_certificate_key /data/custom_ssl/npm-2/privkey.pem;


    # Force SSL
    include conf.d/include/force-ssl.conf;


  access_log /data/logs/proxy-host-1_access.log proxy;
  error_log /data/logs/proxy-host-1_error.log warn;


  location / {
  
  #以下是要添加的内容,ip自行更换
  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/;  #127.0.0.1改成你本机的IP
        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;
    }
 #以上是添加的内容,ip自行更换
 

    # Proxy!
    include conf.d/include/proxy.conf;
  }


  # Custom
  include /data/nginx/custom/server_proxy[.]conf;
}

更改完毕保存退出。
注意:保存完后,请勿在到Nginx Proxy Manager反代进行保存操作,不然配置文件会被重置到未改前的状态,又的重新按照上述进行重新配置。

在vps-2上面操作

连接上SSH,打开/etc/hosts,在文件下方添加下面内容(自行替换成你的)

vps-1的ip plex.domain.com

1.Nginx Proxy Manager 创建一个反向代理,还是和vps-1同一个域名(plex.domain.com),ip指向vps-1,端口:32400,使用vps-1的证书,并开启https。
2.切换到Nginx Proxy Manager的配置文件

cd /root/docker_data/docker-compose/NginxProxyManager/data/nginx/proxy_host

查看目录下的配置文件,每一个反向代理都会对应一个x.conf(x代表数字,下方自行更换成你的数字)

ls
nano x.conf

添加文本内要添加的代码,域名替换成自己的。

# ------------------------------------------------------------
# plex.domain.com
# ------------------------------------------------------------


server {
  set $forward_scheme http;
  set $server         "此处显示的是你反代指向的ip";
  set $port           32400;

  listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443 ssl http2;


  server_name plex.domain.com;


  # Custom SSL
  ssl_certificate /data/custom_ssl/npm-1/fullchain.pem;
  ssl_certificate_key /data/custom_ssl/npm-1/privkey.pem;


    # Force SSL
    include conf.d/include/force-ssl.conf;


  access_log /data/logs/proxy-host-4_access.log proxy;
  error_log /data/logs/proxy-host-4_error.log warn;



  location / {
  
  #以下是要添加的内容,域名自行更换
  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.domain.com/;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_ssl_verify off;
        proxy_http_version 1.1;
        proxy_set_header Host plex.hfdem.net;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;
    }
    #以上是要添加的内容,域名自行更换
    
    # Proxy!
    include conf.d/include/proxy.conf;
  }


  # Custom
  include /data/nginx/custom/server_proxy[.]conf;
}

更改完ctrl+x保存退出

Plex的后台操作

注意:反代完成,使用域名看能否正常访问plex面板,如果一切正常下面开始Plex面板后台的设置

后台取消网络中转

1.设置-网络
2.取消勾选“启用中转”
3.在自定义服务器访问URL添加 https://plex.domain.com:443 (替换成你的域名)

禁用远程

1.远程访问-禁用远程访问


自己玩法:

1号机裸装Nginx配置文件

安装必要的依赖项
sudo apt-get update
sudo apt-get install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev
安装nginx 80端口不要被占用
sudo apt install nginx
查看安装运行状态
systemctl status nginx
打开.bashrc文件,并添加以下行
export PATH="$PATH:/usr/sbin" (为ng的路径)
source ~/.bashrc #保存生效
创建nginx.service服务文件

进入 /etc/systemd/system 目录

cd /etc/systemd/system
新建nginx.service

[Unit]
Description=Nginx HTTP Server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPost=/bin/sleep 0.1
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target
  1. 重新加载 systemd 守护进程,使用命令 sudo systemctl daemon-reload
  2. 重新启动 Nginx 服务,使用命令 sudo systemctl restart nginx
  3. 运行 systemctl status nginx 命令以确认服务是否已经正确启动。

配置

events {
}

http {
server {
set $forward_scheme http;
set $server "144.24.78.67"; #此处是你反代执行的IP,即本机的IP,请勿用127.0.0.1
set $port 32400;

listen 80;
listen [::]:80;

listen 443 ssl http2;
listen [::]:443 ssl http2;

server_name plex域名;

# Custom SSL

ssl_certificate /root/cert/fullchain.cer;
ssl_certificate_key /root/cert/plex1.tnanstar.life.key;

location / {

\#以下是要添加的内容,ip自行更换
client_max_body_size 5000M;
proxy_set_header X-Real-IP remoteaddr;proxysetheaderX−Forwarded−For′remote_addr; proxy_set_header X-Forwarded-For 'remotea​ddr;proxys​eth​eaderX−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://144.24.78.67:32400/; #127.0.0.1改成你本机的IP
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;
}
\#以上是添加的内容,ip自行更换

}

}
}

定时同步ssl证书

1. 设置 SSH 免密码登录

确保 A 机可以无密码 SSH 登录到 B 机:

  1. 在 A 机上生成 SSH 密钥 (如果没有):

    ssh-keygen -t rsa
  2. 将公钥复制到 B 机

    ssh-copy-id root@B鸡IP

2. 编写同步脚本

在 A 机上创建一个脚本来执行同步任务:

bash

#!/usr/bin/env bash
# 定义源目录和目标目录
source="/root/npm/letsencrypt/live"
target="root@B鸡IP:/root/npm-13"

# 使用 rsync 同步文件
rsync -avzP "${source}/" "${target}/"

保存这个脚本为 sync.sh,并确保它是可执行的:

chmod +x sync.sh

3. 设置定时任务

使用 cron 来定时运行这个脚本:

  1. 编辑 crontab

    crontab -e
  2. 添加定时任务 (例如,每天凌晨 2 点执行同步):

    0 2 * * * /path/to/sync.sh

    确保将 /path/to/sync.sh 替换为脚本的实际路径。

4. 验证同步

确保脚本可以手动运行并成功同步文件:

./sync.sh


最后修改:2024 年 10 月 18 日
如果觉得我的文章对你有用,请随意赞赏