CDN缓存系统搭建教程
1 - 介绍及安装教程
提示:新版EFV已在后台集成CDN安装管理,如在转码设置未看到该功能,请更新到新版后再使用。
该CDN
为EFV
配套的简易缓存系统,永久免费,目前可完全在EFV
后台进行自动安装等管理操作,当前可以缓存EFV
的m3u8
、ts
、png
、jpeg
、webp
、mp4
、gif
、key
、txt
和jpg
资源。
缓存规则
cdn
系统缓存命中率为100%
,也就是只要通过cdn
域名访问的视频资源,均会100%
缓存到cdn
所在的服务器里面,无需担心命中问题。- 缓存容量内置上限,也就是最多只能缓存服务器总容量的
85%
,防止使用过多,影响系统其它进程;当缓存容量超过85%
时候,就不会再缓存了,低于85%
立即自动缓存。 - 可以自行设置,自动清理多长时间内未被使用的缓存数据;并且当使用容量达到
60%
时候,也会自动清理较长时间内未被使用,且访问次数少于10
次的缓存数据,大于10
次的会等到过期自动清理。 - 支持设置一到多个防盗链白名单,设置后,只能指定网站才能播放
CDN
缓存的m3u8
、ts
等资源,其它网站均会返回403
无权限状态。
安装CDN
提示:后台安装CDN会自动检查并开启BBR加速,无需额外开启。且EFV防盗链设置的禁止ts下载功能需要关闭,才能缓存。
系统要求:CentOS 8+
,Debian 10+
,Ubuntu 20.04+
,AlmaLinux 8+
,Rocky Linux 8+
。
如果你的切片访问量比较大,那么服务器的cpu
即配置尽量好点,且多用几台服务器提供cdn
,不然负载多cdn
服务器容易卡。
首先前往程序后台 ⇒ 点击左侧转码相关 ⇒ CDN
安装管理,再添加CDN
服务器,然后安装CDN
即可。
这里注意加速域名
推荐使用EFV
的ip:3000
访问地址,效果更好,其次才用EFV
的绑定域名地址。
最后安装完成后,可通过实时监控统计
,查看CDN
服务器CPU
、内存、硬盘、带宽、CDN
设置及缓存数统计等。
其它设置
提示:以下设置均可在EFV后台进行快捷操作。
绑定CDN域名
首先需要将CDN
域名解析到CDN
服务器,然后等解析生效,可使用SSH
随便登录你CDN
服务器,使用命令ping yourdoman.com
,将后面域名修改成你自己的CDN
域名,如返回的ip
和你CDN
服务器一样,就说明解析生效。
然后再将域名填入到输入框,如:cdn.com
,不能带http://
或https://
,多域名使用英文|
分开,如:1.cdn.com|2.cdn.com|3.cdn.com
。
CDN设置
防盗链设置
直接在输入框输入白名单域名,一行一个域名,支持泛域名,如*.example.com
,开头不要包含http://
或https://
,末尾不要带/
。
设置后,只有白名单的域名可以使用CDN
的M3U8
、图片等链接,其它网站使用均会返回403
无权限;关闭则所有网站都能使用。
缓存规则设置
目前只能设置自动清理多久未用的缓存
和不缓存M3U8
选项,缓存时间可根据服务器硬盘进行适当调整,如果你在EFV
开启过时间戳防盗链功能,并通过该CDN
播放M3U8
,则需开启该功能,这样能完美兼容防盗链功能。
加速源站设置
目前CDN
默认只能缓存添加CDN服务器
的时候,设置的加速源站域名;如果你想更换要加速的EFV
地址 或者 同时加速多台EFV
,则可以进行设置。
比如当CDN
绑定域名为cdn.example.com
,需要加速EFV
某个地址efv.example.com
,而非默认源站时,那么该映射规则为:cdn.example.com$efv.example.com
,这里EFV
地址也可以使用ip:3000
,注意中间使用$
分隔。输入框每行一个映射规则即可。
当设置好了后,通过该CDN
域名访问的时候,会从指定的源站拉取资源;没有设置映射规则的CDN
域名,依然会从默认的加速源站拉取资源。
清空缓存
目前可指定M3U8
、图片等类型文件或全部文件,根据自己需求进行清空。
相关说明
单台CDN使用
如果你就一台CDN
,可以直接将CDN
域名替换EFV
域名,进行m3u8
、图片等资源访问;如使用苹果CMS
等采集功能,可将CDN
域名填入到转码设置
的域名设置
,这样采集接口里面的M3U8
等资源的域名会变成CDN
域名,再入库到相关CMS
。
多台CDN使用
目前CDN
为单节点,所以只能结合线路管理
功能一起使用,即将所有CDN
域名同时填到一个线路配置,一起提供切片播放,线路管理使用教程 ⇒ 传送门。
然后选出其中一台CDN
域名提供M3U8
,截图等使用,播放视频的时候,会从多个CDN
域名请求切片,即可以将所有CDN
同时用上。
2 - cdn手动安装教程
如果你是新手,不怎么熟悉Linux
系统,推荐直接在EFV
后台进行安装和管理,手动安装只适合有点基础,喜欢折腾的人。
开始安装
系统要求:CentOS 8+
,Debian 10+
,Ubuntu 20.04+
,AlmaLinux 8+
,Rocky Linux 8+
,且为刚重装好的系统。
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#下载脚本
wget --no-check-certificate -O '/tmp/cdn.sh' 'https://file.efvcms.com/cdn/install_cdn.sh'
#运行脚本
bash /tmp/cdn.sh /home http://127.0.0.1:3000 10080 apikey
#相关参数说明
/home为安装目录,需绝对路径,自行修改,不存在会自动创建
http://127.0.0.1:3000为EFV的访问地址,推荐使用http://ip:3000
10080为缓存时间,单位分钟
apikey为apikey,可以随便填
Enter
运行,直到脚本运行结束,期间会给你安装所有环境,包括BBR
,安装完成后,访问地址为ip:3888
。
如果第一行命令出现wget: unable to resolve host address
报错,则解决方法 ⇒ 传送门。
其它操作
绑定域名
使用脚本绑定域名,需服务器不要安装nginx/apache
等,且绑定后,也不要安装这些,不然会冲突。
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#下载脚本
wget --no-check-certificate -O '/tmp/add_caddy.sh' 'https://file.efvcms.com/app/add_caddy.sh'
#绑定cdn域名,运行前请将后面的域名改成自己的,注意提前将域名解析到CDN服务器,会自动申请免费SSL证书
bash /tmp/add_caddy.sh '1.cdn.com@127.0.0.1:3888'
#同时绑定多个cdn域名,运行前请将后面的域名改成自己的,注意提前将域名解析到CDN服务器,会自动申请免费SSL证书
bash /tmp/add_caddy.sh '1.cdn.com@127.0.0.1:3888|2.cdn.com@127.0.0.1:3888'
格式为域名@反代地址
,cdn
默认地址为127.0.0.1:3888
,可以不用修改,多个域名使用|
分开,
注意绑定命令可以重复运行,每次运行都会重置绑定域名,所以请一次性绑定好所有域名。
清除缓存
#下载脚本
wget --no-check-certificate -O '/tmp/cache.sh' 'https://file.efvcms.com/cdn/cache.sh'
#运行脚本,/home为cdn安装目录,自行修改
bash /tmp/cache.sh /home
修改CDN配置
如果我的安装目录为/home
,则配置文件为/home/cdn-node/config/config.js
,编辑代码详解如下:
module.exports = {
dbUrl: "127.0.0.1", //mongodb数据库ip,不用修改,默认即可
db: "efvcdn", //mongodb数据库名称,不用修改,默认即可
dbUser: "efvcdn", //mongodb数据库用户名,不用修改,默认即可
dbPassword: "efvcdn", //mongodb数据库密码,不用修改,默认即可
apiKey: '6860e43596fd11d4ee66303d', //apikey,自行修改
efvDomain: 'http://localhost:3000', //EFV绑定域名 或 ip:3000地址,注意带上http://或https://,后面不带/
keeptime: 20 //缓存时间,单位分钟,根据硬盘大小适当调整
};
接下载再使用SSH
客户端,继续使用命令:
#进入源码目录
cd /home/cdn-node
#杀掉当前进程
pm2 kill
#启动
pm2 start ecosystem.config.js --env production
如果运行命令期间提示-bash: pm2: command not found
,则需要先运行一下source /etc/profile
,然重新打包即可。
其它用法
该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加载实在太快了!