一.起因

玩服务器多的人一般都见过一张在圈子里流传的图,就是在稳定、速度、价格这三者之间取舍的韦恩图。由于利用Plex搭建在线视频服务器本身只是我拿来利用闲置服务器的一个项目,所以也没打算扔太多钱在上面,这也就意味着,这台机器必然会在 速度或者稳定其中一者上有所取舍。而我选择的是稳定,所以么,速度也就没那么好了。

二.分析

我拿来跑Plex的服务器是Kimsufi的K4C,i5+16G+2T+100M,配置是还OK的,就是处于法国,这样的话个国内有些情况下速度就比较憋屈了,虽然我配置了BBR,但是在部分网络下还是只有500k左右的速度,虽然看个720p还是没问题的,但是拖动的话还是有些不够流畅,这远远不能让我满足。如果是普通网站,为了加快访问速度我们想到的就是上CDN,那么Plex能不能这么干呢?

当然也是可以的,只要CDN支持Websocket,因为Plex的部分数据是通过WS从服务器上获取的,只要想办法让WebSocket通过CDN将用户和服务器连接起来,借助CDN机房网络比用户家用网络拥有更优异的路由和带宽的优势,我们就能够获得比直连更快的播放速度。

三.解决

研究了下网上的各种方法,发现众说纷纭啊,Quickbox的教程看上去很靠谱,其实并没有卵用,复杂的要死,有个Github上的教程就很简单也很有效。

地址在这 https://github.com/toomuchio/plex-nginx-reverseproxy

他这个主要就是个nginx的vhost配置文件,然后还有些说明,我来简单介绍下流程。
怎么在机器上安装nginx我就不提了吧,太简单了,随便你用源装还是用各种lnmp包啥的装,反正只需要一个nginx本体。

修改下 https://github.com/toomuchio/plex-nginx-reverseproxy/raw/master/nginx.conf 这个配置文件,注意这个不是替代你的nginx.conf的,这样不太好,我建议把它作为模板来修改你新建的vhost,下面是我改的

记得把SSL和Server_name啥的给改了,其他可以直接用来着。

我把GitHub上的配置里那个global的ssl缓存设置给丢到了server段,这个只要你nginx.conf里面没有定义过放到server里面是不会冲突的,不然server段配置的缓存大小受global限制,不能超过。

然后有些HSTS啥的因为我打算用百度云加速,免费套餐不支持https,所以就没有加上,另外部分平台的plex不支持https,比如roku和ps4上的,具体可以参考这个issue ——>传送门

还有ssl证书的话可以用let's encrypt的,签发可以用acme.sh,这个我就不介绍了。

在配置完nginx反代后,我们就能通过反代的域名访问plex了,测试下先,然后我们做些修改。

Remote Access - Disable
Network - Custom server access URLs = https://<your-domain>:443,http://<your-domain>:80
Network - Secure connections = Preferred.
#f03c15 Note you can force SSL by setting required and not adding the HTTP URL, however some players which do not support HTTPS (e.g: Roku, Playstations, some SmartTVs) will no longer function.

就是在远程访问那儿禁用远程访问(开了的话Plex会把IP上报给Plex的官方服务器,然后你默认会用端口连那个IP,而不是走CDN)

然后在网络那儿配置访问地址Custom server access URLs (如果没看见这个请点击右上方的显示高级选),这个可以用逗号来分隔添加多个地址,比如http和https的(https://<your-domain>:443,http://<your-domain>:80),记得带上端口,至于那个Secure connections看你需求,如果不用https就禁用掉,支持可以开preferred,不建议开必须,这样兼容性不好。

配置完成后建议用防火墙关掉外部访问32400端口,防止部分平台不管配置的 Custom server access URLs 而优先直接访问32400(当然,上了cdn的情况下是访问不通的)

这是iptables命令,禁止非本地访问32400的

然后你就可以享受刷刷刷的访问速度了,当然,你会记得在cdn那边添加域名的对吧

经过测试,上了CDN之后我能够达到峰值10M/s,稳定3-4m/s的4k播放,效果还是很棒的。


Senraの小窝原创文章,转载请注明来自:使用CDN加速Plex播放