说明:cdn-manager
是云转码express-ffmpeg的作者quazero
根据@dadi/cdn制作的脚手架,该原理貌似是一个API
服务,搭建好的CDN
服务器第一次访问你设定的网站后,会将原站一些资源缓存到服务器,而且不仅仅可以缓存jpg
、css
、js
等,就连ts
、m3u8
、mp4
也可以缓存,默认是缓存一个小时,但可以设置永久缓存。并且当你的并发很高,硬盘IO
跟不上的时候,就把图片转换成二进制存内存里边。更强的就是还可以给图片加参数,如高宽、格式、滤镜、比例、旋转等,然后拉取图片后按要求处理,再实时返回你需要的图片并缓存到服务器。有需求的可以使用延迟比较低的服务器搭建下,可以减轻我们源站压力,特别是并发比较高的网站。
本教程适用于CentOS
,建议使用CentOS 7
系统。
1、安装依赖
#升级系统 yum update -y #安装开发者工具包 yum -y groupinstall "Development Tools" #安装nodejs curl -sL https://rpm.nodesource.com/setup_10.x | bash - yum install nodejs -y #安装pm2 npm install pm2 -g
2、安装程序
#拉取源码 git clone https://gitee.com/quazero/cdn-manager.git cd cdn-manager #安装 npm install #设置环境 export NODE_ENV=production
3、配置参数
注意:本步骤讲的默认配置只缓存图片,所以我们要了解下基本配置,然后再去参考文章最后面的更多设置,再使用4步骤运行程序。
本程序主要涉及到2
个配置文件poster.json
和config.production.json
,前者是图片处理的配置文件,后者是运行环境配置文件。
图片配置路径workspace/recipes/poster.json
,默认参数如下:
{ "recipe": "poster", "settings": { "format": "jpg", "quality": "90", "height": "240", "ratio": "16-9", "resizeStyle": "entropy" } }
意思是将图片处理成16:9
的比例,高度240PX
,并且格式为jpg
,质量为90%
的格式。
运行环境配置路径config/config.production.json
,默认参数如下:
{ "server": { "host": "127.0.0.1", "port": 8001 }, "images": { "remote": { "enabled": true, "path": "#" } } }
意思是运行端口为8001
,设置远程连接path
,比如我的域名是https://www.moerats.com
,就在参数后面填该域名。
4、运行程序
#进入源码的文件夹 cd /root/cdn-manager #这里避免出错,建议安装一些模块 npm install sharp farmhash #运行 pm2 start index.js
运行环境配置
1、缓存设置
"caching": { "ttl": 3600, "expireAt": "0 5 0 * * *" }
expireAt
配置解释:
"0 5 0 * * _" 每天凌晨12点5分刷新缓存 "0 30 11 _ _ 1-5" 每周星期一到星期五 早上11点30刷新缓存 "0 15 14 1 _ _" 每个月一号下午2点15刷新缓存 "0 22 _ _ 1-5" 周一到周五晚上10点刷新缓存 "_ 5 4 * * 0" 每周日凌晨4点5分刷新缓存
ttl
配置解释:
单位秒,默认3600秒,一个小时缓存失效,可以自行设置时长。 /api/flush可以通过这个API手动刷新缓存文件。
2、image配置
"images": { "directory": { "enabled": true, "path": "relative/path/to/your/images" }, "remote": { "enabled": true, "path": "https://www.moerats.com/images" }, "s3": { "enabled": true, "accessKey": "your-access-key", "secretKey": "your-secret", "bucketName": "your-bucket", "region": "your-region", "endpoint": "ams3.digitaloceanspaces.com" } }
directory
服务本地文件,直接指定path
为文件夹地址即可直接处理本地图片。例如/www/moerats.com/picture
,然后将图片地址host
更改为CDN
地址即可。
remote
服务远程文件,直接设置path
为远程url
,例如https://www.moerats.com
,最后把地址替换成 cdn
地址即可。
s3
云储存可扩展的云储存,可以直接缓存各种云储存上边的图片。
3、assets配置
"assets": { "directory": { "enabled": true, "path": "/Users/absolute/path/to/your/assets" } }
该配置方法参考image
配置,除了把images
换成assets
,其他用法一样,设置之后会缓存除了jpg
的各种文件,包括视频文件。
图片处理配置
{ "recipe": "poster", "settings": { "format": "jpg", "quality": "90", "height": "240", "ratio": "16-9", "resizeStyle": "entropy" } }
recipe
文件是预配置格式处理文件,在workspace/recipes
文件夹中建立。
"recipe"
参数设置必须和文件名一致。settings
中可以设置的选项:
blur 模糊 filter 设置裁剪处理算法 flip 翻动 format 格式 gravity 设置裁剪区域 ratio 比例 rotate 旋转 width 宽度 height 高度
设置完成之后,比如recipe
为poster
,则访问链接为cdnhost/poster/yourpath/1.jpg
。
域名反代
1、宝塔反代
先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL
填入http://127.0.0.1:8001
,再启用反向代理即可。至于启用SSL
就不说了,直接在站点配置就可以看到。
2、Caddy反代
安装Caddy
:
wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh #备用地址 wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
配置Caddy
:
#以下全部内容是一个整体,请修改域名后一起复制到SSH运行! #http访问,该配置不会自动签发SSL echo "xx.com { gzip proxy / http://127.0.0.1:8001 }" > /usr/local/caddy/Caddyfile #https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器 echo "xx.com { gzip tls admin@moerats.com proxy / http://127.0.0.1:8001 }" > /usr/local/caddy/Caddyfile
tls
参数会自动帮你签发ssl
证书,如果你要使用自己的ssl
,改为tls /root/xx.crt /root/xx.key
即可。后面为ssl
证书路径。
启动Caddy
:
/etc/init.d/caddy start
最后我们都配置好了后,只需要在原网站将资源链接域名替换成CDN
的地址即可。大概使用如下:
原图片地址为:https://www.moerats.com/rats.jpg CDN中地址为:https://cdn.moerats.com/poster/rats.jpg,该链接会自动处理图片 #如果你不想对图片进行处理,直接代替原域名就可以了,如: https://cdn.moerats.com/rats.jpg #其他资源就直接替换域名为CDN地址即可
原文链接:https://www.moerats.com/archives/773/
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/6678