详细解说如何自建CDN?

  • 2022-12-05
  • Author:Korims

在我们要自建CDN的过程中应该对CDN有一个详细的了解,所以什么是CDN?具体来说,CDN就是采用更多的缓存服务器(CDN边缘节点),布放在用户访问相对集中的地区或网络中。当用户访问网站时,利用全局负载技术,将用户的访问指向距离最近的缓存服务器上,由缓存服务器响应用户请求。通俗一点的讲部署CDN就是为了提高访问速度,改善用户访问互联网或某一站点或APP的速度。


自建CDN


为什么需要自建CDN?原因有三:


1.要用国内的CDN服务器域名都需要备案。


2.免费的CDN服务器的稳定性和加速效果都不是很行。


3.付费的CDN服务器一般都贵的要死,根本用不起。


假设百度网站现在只有一台服务器,现在有一个人在深圳访问百度,如果该服务器也在深圳,那么通常来说访问比较快,如果该服务器在新疆,那么相对而言访问就比较慢了。那么这个问题的根本原因是网络传输是依赖于网线的,网线越长,那么时间肯定就越久。


那么可以怎么自建CDN?通过Ngnix进行反向代理自建CDN的方法


反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。


具体操作流程:


首先安装Nginx


wget https://raw.githubusercontent.com/helloxz/nginx-cdn/master/nginx.sh

chmod +x nginx.sh && ./nginx.sh


完整操作示例:网站名:www.xxx.com自行替换自己的网站地址


源站: aaa.aaa.aaa.aaa 原始数据和服务的服务器地址

CDN1:bbb.bbb.bbb.bbb (电信节点)

CDN2:ccc.ccc.ccc.ccc (联通节点)

CDN3:ddd.ddd.ddd.ddd(移动节点)


我们需要修改CDN1/2/3服务器的host指向:


vi /etc/hosts

aaa.aaa.aaa.aaa www.xxx.com


分别在CDN1/CDN2/CDN3下创建nginx配置文件xxx.com.conf


mkdir -p /data/wwwroot/caches/www.xxx.com#创建缓存目录

chown -R www:www /data/wwwroot/caches/www.xxx.com#设置缓存目录权限

vi /usr/local/nginx/conf/vhost/xxx.comconf#创建xxx.com.conf


在xxx.com.conf中加入:


/data/wwwroot/caches/www.joymagic.com:为缓存目录

levels:指定该缓存空间有两层hash目录,第一层目录为1个字母,第二层为2个字母。

keys_zone=caches:100m:为缓存空间起个名字,这里取名为“caches”,后面的50m指内存缓存空间

inactive=30m:如果30分钟内该资源没有被访问则删除

max_size=100m:指硬盘缓存大小为100MB

proxy_cache_valid:指定状态码缓存时间,前面写状态码,后面写缓存时间。


重载nginx使配置生效:service nginx reload


智能解析


在CloudXNS后台,将不同的运营商指向不同的节点,使其达到分发和缓存加速效果。将域名的www的A记录指向:


CDN1:bbb.bbb.bbb.bbb (电信节点)

CDN2:ccc.ccc.ccc.ccc (联通节点)

CDN3:ddd.ddd.ddd.ddd(移动节点)


最后使用http://ping.chinaz.com测试各地解析是否生效。