前提工作
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
- 重新加载 systemd 守护进程,使用命令
sudo systemctl daemon-reload
。 - 重新启动 Nginx 服务,使用命令
sudo systemctl restart nginx
。 - 运行
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 'remoteaddr;proxysetheaderX−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 机:
在 A 机上生成 SSH 密钥 (如果没有):
ssh-keygen -t rsa
将公钥复制到 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
来定时运行这个脚本:
编辑 crontab:
crontab -e
添加定时任务 (例如,每天凌晨 2 点执行同步):
0 2 * * * /path/to/sync.sh
确保将
/path/to/sync.sh
替换为脚本的实际路径。
4. 验证同步
确保脚本可以手动运行并成功同步文件:
./sync.sh