如何搭建自己的CDN高速缓存服务器

  • A+
所属分类:网络安全教程

 如何搭建自己的CDN高速缓存服务器

程序简介

CdnManager不仅仅可以缓存jpg、css、js等,就连ts、m3u8、mp4也可以缓存,默认是缓存一个小时,但可以设置永久缓存。并且当你的并发很高,硬盘IO跟不上的时候,就把图片转换成二进制存内存里边。更强的就是还可以给图片加参数,如高宽、格式、滤镜、比例、旋转等,然后拉取图片后按要求处理,再实时返回你需要的图片并缓存到服务器。有需求的可以使用延迟比较低的服务器搭建下,可以减轻我们源站压力,特别是并发比较高的网站。

安装地址

CdnManager:https://gitee.com/quazero/cdn-manager

dadi/cdn:https://github.com/dadi/cdn

本教程适用于CentOS 7系统(本次实验搭建环境)

1.安装依赖

  1. #升级系统
  2. yum update -y
  3. #安装开发者工具包
  4. yum -y groupinstall "Development Tools"
  5. #安装nodejs
  6. curl -sL https://rpm.nodesource.com/setup_10.x | bash -
  7. yum install nodejs -y
  8. #安装pm2
  9. npm install pm2 -g

2.安装程序

  1. #拉取源码
  2. git clone https://gitee.com/quazero/cdn-manager.git
  3. cd cdn-manager
  4. #安装
  5. npm install
  6. #设置环境
  7. export NODE_ENV=production

3、配置参数

注意:本步骤讲的默认配置只缓存图片,所以我们要了解下基本配置,然后再去参考文章最后面的更多设置,再使用4步骤运行程序。

本程序主要涉及到2个配置文件poster.json和config.production.json,前者是图片处理的配置文件,后者是运行环境配置文件。

图片配置路径workspace/recipes/poster.json,默认参数如下:

  1. {
  2.   "recipe""poster",
  3.   "settings": {
  4.     "format""jpg",
  5.     "quality""90",
  6.     "height""240",
  7.     "ratio""16-9",
  8.     "resizeStyle""entropy"
  9.   }
  10. }

意思是将图片处理成16:9的比例,高度240PX,并且格式为jpg,质量为90%的格式。

运行环境配置路径config/config.production.json,默认参数如下:

  1. {
  2.   "server": {
  3.     "host""www.cesafe.com",
  4.     "port"8001
  5.   },
  6.   "images": {
  7.     "remote": {
  8.       "enabled"true,
  9.       "path""#"
  10.     }
  11.   }
  12. }

意思是运行端口为8001,设置远程连接path,比如我的域名是https://www.cesafe.com,就在参数后面填该域名。

4、运行程序

  1. #进入源码的文件夹
  2. cd /root/cdn-manager
  3. #这里避免出错,建议安装一些模块
  4. npm install sharp farmhash
  5. #运行
  6. pm2 start index.js

运行环境配置

1、缓存设置

  1. "caching": {
  2.   "ttl"3600,
  3.   "expireAt""0 5 0 * * *"
  4. }

expireAt配置解释:

  1. "0 5 0 * * _" 每天凌晨125分刷新缓存
  2. "0 30 11 _ _ 1-5" 每周星期一到星期五 早上1130刷新缓存
  3. "0 15 14 1 _ _" 每个月一号下午215刷新缓存
  4. "0 22 _ _ 1-5" 周一到周五晚上10点刷新缓存
  5. "_ 5 4 * * 0" 每周日凌晨45分刷新缓存

2、image配置

  1. "images": {
  2.   "directory": {
  3.     "enabled"true,
  4.     "path""relative/path/to/your/images"
  5.   },
  6.   "remote": {
  7.     "enabled"true,
  8.     "path""https://www.moerats.com/images"
  9.   },
  10.   "s3": {
  11.     "enabled"true,
  12.     "accessKey""your-access-key",
  13.     "secretKey""your-secret",
  14.     "bucketName""your-bucket",
  15.     "region""your-region",
  16.     "endpoint""ams3.digitaloceanspaces.com"
  17.   }
  18. }

images配置项 一共有三种用法,一种是直接服务同主机图片,服务本地图片,一种是服务远程图片,最后一种是亚马逊和Digital Ocean Space云储存。

directory服务本地文件,直接指定path为文件夹地址即可直接处理本地图片。例如/www/cesafe.com/picture,然后将图片地址host更改为CDN地址即可。

remote服务远程文件,直接设置path为远程url,例如https://www.cesafe.com,最后把地址替换成 cdn地址即可。

s3云储存可扩展的云储存,可以直接缓存各种云储存上边的图片。

3、assets配置

  1. "assets": {
  2.   "directory": {
  3.     "enabled"true,
  4.     "path""/Users/absolute/path/to/your/assets"
  5.   }
  6. }

该配置方法参考image配置,除了把images换成assets,其他用法一样,设置之后会缓存除了jpg的各种文件,包括视频文件。

域名反代

要想正常访问就需要使用域名反代,这里说下宝塔反代和Caddy反代。如果你网站有宝塔,就可以使用宝塔进行反代,如果没有,建议使用第2种的Caddy反代,配置很快。

1、宝塔反代

先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:8001,再启用反向代理即可。至于启用SSL就不说了,直接在站点配置就可以看到。

2、Caddy反代

安装Caddy:

  1. wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager
  2. #备用地址
  3. wget -N --no-check-certificate https://www.cesafe.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh install http.filemanager

3、配置Caddy:

  1. #以下全部内容是一个整体,请修改域名后一起复制到SSH运行!
  2. #http访问,该配置不会自动签发SSL
  3. echo "cesafe.com {
  4.  gzip
  5.  proxy / http://127.0.0.1:8001
  6. }" > /usr/local/caddy/Caddyfile
  7. #https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
  8. echo "xx.com {
  9.  gzip
  10.  tls service@cesafe.com
  11.  proxy / http://127.0.0.1:8001
  12. }" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

4、启动Caddy:

  1. /etc/init.d/caddy start

最后我们都配置好了后,只需要在原网站将资源链接域名替换成CDN的地址即可。大概使用如下:

  1. 原图片地址为:https://www.cesafe.com/cesafe.jpg
  2. CDN中地址为:https://cdn.cesafe.com/poster/cesafe.jpg,该链接会自动处理图片
  3. #如果你不想对图片进行处理,直接代替原域名就可以了,如:
  4. https://cdn.cesafe.com/cesafe.jpg
  5. #其他资源就直接替换域名为CDN地址即可
  • CE安全网微信群
  • weinxin
  • CE安全网QQ群
  • weinxin
CE安全网

网络安全宣传推广

发表评论

您必须登录才能发表评论!