这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

CDN缓存系统搭建教程

该系统为EFV开发的一个简易免费的CDN系统,拥有100%命中率,可自动清理不活跃文件,灵活调整缓存空间。

1 - 介绍及安装教程

CDN系统推荐结合EFV的线路定时功能一起用,即晚上外网网络的拥堵的时候,自动切换到指定CDN线路。
提示:新版EFV已在后台集成CDN安装管理,如在转码设置未看到该功能,请更新到新版后再使用。

CDNEFV配套的简易缓存系统,永久免费,目前可完全在EFV后台进行自动安装等管理操作,当前可以缓存EFVm3u8tspngjpegwebpmp4gifkeytxtjpg资源。

缓存规则

  • cdn系统缓存命中率为100%,也就是只要通过cdn域名访问的视频资源,均会100%缓存到cdn所在的服务器里面,无需担心命中问题。
  • 缓存容量内置上限,也就是最多只能缓存服务器总容量的85%,防止使用过多,影响系统其它进程;当缓存容量超过85%时候,就不会再缓存了,低于85%立即自动缓存。
  • 可以自行设置,自动清理多长时间内未被使用的缓存数据;并且当使用容量达到60%时候,也会自动清理较长时间内未被使用,且访问次数少于10次的缓存数据,大于10次的会等到过期自动清理。
  • 支持设置一到多个防盗链白名单,设置后,只能指定网站才能播放CDN缓存的m3u8ts等资源,其它网站均会返回403无权限状态。

安装CDN

提示:后台安装CDN会自动检查并开启BBR加速,无需额外开启。且EFV防盗链设置的禁止ts下载功能需要关闭,才能缓存。

系统要求:CentOS 8+Debian 10+Ubuntu 20.04+AlmaLinux 8+Rocky Linux 8+

如果你的切片访问量比较大,那么服务器的cpu即配置尽量好点,且多用几台服务器提供cdn,不然负载多cdn服务器容易卡。

首先前往程序后台 ⇒ 点击左侧转码相关 ⇒ CDN安装管理,再添加CDN服务器,然后安装CDN即可。

这里注意加速域名推荐使用EFVip:3000访问地址,效果更好,其次才用EFV的绑定域名地址。

最后安装完成后,可通过实时监控统计,查看CDN服务器CPU、内存、硬盘、带宽、CDN设置及缓存数统计等。

其它设置

绑定CDN域名

首先需要将CDN域名解析到CDN服务器,然后等解析生效,可使用SSH随便登录你CDN服务器,使用命令ping yourdoman.com,将后面域名修改成你自己的CDN域名,如返回的ip和你CDN服务器一样,就说明解析生效。

然后再将域名填入到输入框,如:cdn.com,不能带http://https://,多域名使用英文|分开,如:1.cdn.com|2.cdn.com|3.cdn.com

设置防盗链白名单

直接在输入框输入白名单域名,一行一个域名,支持泛域名,如*.example.com,开头不要包含http://https://,末尾不要带/

设置后,只有白名单的域名可以使用CDNM3U8、图片等链接,其它网站使用均会返回403无权限。

修改缓存规则

目前只能设置自动清理多久未用的缓存不缓存M3U8选项,缓存时间可根据服务器硬盘进行适当调整,如果你在EFV开启过时间戳防盗链功能,并通过该CDN播放M3U8,则需开启该功能,这样能完美兼容防盗链功能。

清空指定缓存

目前可指定M3U8、图片等类型文件或全部文件,根据自己需求进行清空。

相关说明

单台CDN使用

如果你就一台CDN,可以直接将CDN域名替换EFV域名,进行m3u8、图片等资源访问;如使用苹果CMS等采集功能,可将CDN域名填入到转码设置域名设置,这样采集接口里面的M3U8等资源的域名会变成CDN域名,再入库到相关CMS

多台CDN使用

目前CDN为单节点,所以只能结合线路管理功能一起使用,即将所有CDN域名同时填到一个线路配置,一起提供切片播放,线路管理使用教程 ⇒ 传送门

然后选出其中一台CDN域名提供M3U8,截图等使用,播放视频的时候,会从多个CDN域名请求切片,即可以将所有CDN同时用上。

2 - cdn其它用法及缓存清理

CDN系统除了加速切片,还可以使用其接口处理图片的宽高,或类型为webp等。

接口用法

cdn除了加速切片,还可以用作一个图片云处理服务器,直接处理任何的图片地址,并将图片转换为webp格式缓存到本地服务器,体积极小,加载极快,也可直接通过该接口处理调用其它图片。

云处理服务接口/api,调用示例:

https://imageserver.querydata.org/api?url=https://wmdb.querydata.org/movie/poster/no-poster.jpg&width=200&format=webp

#参数详解
url为需要加速处理的图片地址,且服务器必须可以正常请求该图片域名
width和height参数为海报长宽,至少需要存在一个,当仅存在其中一个时,则会保留图片宽高比自动处理!
format为返回类型,支持jpg、png和webp,推荐使用webp,程序会判断浏览器是否支持webp,支持webp返回webp,不支持返回jpg!webp加载实在太快了!

清除缓存文件

有时候我们想清空节点服务器缓存,这里分2部分操作,清楚缓存文件和缓存数据库表。

先停止节点服务器

首先使用SSH客户端,比如Xshell软件,登录服务器,再使用命令:

pm2 kill

删除缓存文件

比如我节点服务器目录为/home/cdn-node,删除/home/cdn-node/public/tmp目录里全部文件即可,可使用命令:

find /home/cdn-node/public/tmp -type f -delete

删除缓存数据库表

使用命令:

mongo efvcdn --eval "db.files.deleteMany({})"

最后输出true则删除成功,然后使用ctrl + d退出即可。

全部操作完成后,使用命令重新启动节点:

#进入源码目录
cd /home/cdn-node
#环境生效
source /etc/profile
#启动程序
pm2 start ecosystem.config.js --env production