Update:
最新版已有更简单的方式,此贴关闭,使用方法参考 https://pixman.io/topics/16
也可以使用新版的 nginx 配置,参考: https://pixman.io/topics/39
江苏移动直播源 最近新增了阿里云 CDN,但是也存在不稳定性,以及对于 UA 的限制,有些播放器或者电视机上的 APP 不太容易调整 UA,而且 CDN 可用性的变化会导致在播放中可能需要时不时调整订阅,体验很不好。
下面分享一种使用 nginx 负载均衡来提高观看稳定性的方式,这种方式仅限于部署在自家软路由或内网内的服务器,不建议部署到云服务器,除非你服务器的流量不要钱 (Doge。
有两种使用方法,我建议直接用 Docker Compose 方式。
首先我们创建一个目录来保存自定义的 nginx 配置文件 (放在任何位置都可以,下面以 /opt/pixman/nginx 为例
mkdir -p /opt/pixman/nginx
touch /opt/pixman/nginx/tptv.conf
tptv.conf 内容如下
server {
listen 8001 default_server;
location / {
set $ua 'okhttp/3';
if ($arg_ua) {
set $ua $arg_ua;
}
proxy_pass http://tptv1.mobaibox.com;
proxy_set_header Host tptv1.mobaibox.com;
proxy_set_header User-Agent $ua;
proxy_connect_timeout 3;
}
}
server {
listen 8002 default_server;
location / {
set $ua 'okhttp/3';
if ($arg_ua) {
set $ua $arg_ua;
}
proxy_pass http://tptv2.mobaibox.com;
proxy_set_header Host tptv2.mobaibox.com;
proxy_set_header User-Agent $ua;
proxy_connect_timeout 3;
}
}
upstream cdn_server {
server 127.0.0.1:8001 weight=1 max_fails=1 fail_timeout=60s;
# tptv2.mobaibox.com 貌似被关闭,暂时注释掉
# server 127.0.0.1:8002 weight=1 max_fails=1 fail_timeout=60s;
}
server {
listen 8000 default_server;
# 修改 YOUR_DOMAIN 为你自己的域名,没有域名就删除 server_name 这一行
server_name YOUR_DOMAIN;
location / {
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://cdn_server;
}
}
编辑好这个文件后,使用下面命令启动 nginx
docker run -d --name=pixman-nginx -p 8000:8000 -v /opt/pixman/nginx:/etc/nginx/conf.d --restart=always nginx
启动完成后,pixman 容器也需要启动,具体可以看 https://pixman.io/topics/17
然后使用 http://ip:port/tptv.m3u?cdn=YOUR_DOMAIN:8000 播放。
如果你在前面修改 nginx 的时候删掉了 server_name 设置,则直接使用宿主机的 ip 来访问,http://ip:5000/tptv.m3u?cdn=ip:8000
这是我推荐的方式,也可以直接与 pixman 一起部署,方便快捷,以下示例中,文件全部放在 /opt/pixman 目录下,具体的文件结构如下:

docker-compose.yml 内容 (192.168.50.50:7890 换成你自己的代理服务器)
services:
pixman:
image: pixman/pixman:latest
restart: always
container_name: pixman
environment:
- http_proxy=http://192.168.50.50:7890
- https_proxy=http://192.168.50.50:7890
- MYTVSUPER_TOKEN=TOKEN
ports:
- 5000:5000
pixman-nginx:
image: nginx:latest
restart: always
container_name: pixman-nginx
ports:
- 8000:8000
volumes:
- ./nginx:/etc/nginx/conf.d
tptv.conf 内容与前面的一致,不再重复
准备完毕后,在 /opt/pixman 目录下运行 docker compose up -d 即可一键拉起 pixman 和 nginx 容器,接下来的操作与上面命令行方式一致,订阅,观看,Enjoy it ~
ip 指的是宿主机的 ip,比如运行 docker 的 openwrt 软路由 ip; 如果完全按照教程里写的,那订阅地址就是 你的ip:5000/tptv.m3u?cdn=你的ip:8000
如果你没有域名,不需要关心 YOUR_DOMAIN 这个值
群晖部署,我的文件都是放在 /volume1/docker/pinman,运行 docker compose up -d后 pixman-nginx容器错误,出现mount failed: '/opt/stacks/pixman/nginx' does not exists pinman容器正常 我看上面也没有说要挂载到/opt/stacks/pixman/nginx
群晖不用这么麻烦,假设你的 compose 文件和 nginx 配置都在 /volume1/docker/pixman 下,那你 compose 内容这么写
services:
pixman:
image: pixman/pixman:latest
restart: always
container_name: pixman
environment:
- http_proxy=http://192.168.50.50:7890
- https_proxy=http://192.168.50.50:7890
- MYTVSUPER_TOKEN=EXAMPLE
ports:
- 5050:5000
pixman-nginx:
image: nginx:latest
restart: always
container_name: pixman-nginx
ports:
- 8000:8000
volumes:
- ./nginx:/etc/nginx/conf.d
目录结构如下

你应该理解一下目录的含义,而不是直接照搬我的配置。
看了你上面文件的内容pixman-nginx容器也没有哪里说需要挂载到、opt/stacks,就是运行compose pixman-nginx 容器错误无法启动,出现 mount failed: '/opt/stacks/pixman/nginx' does not exists
是有些奇怪呢。我电视上是用Fongmi TV播放器,这几个台播不了。到服务器上用iptv-checker(https://github.com/freearhey/iptv-checker) 测试了一下,这几个台返回:FFMPEG Undefined Error