写在开始
前几日,由我开发&部署的"某某大学人工智能学院智能优化与学习实验室管理系统"被攻击了,导致实验室服务器的IP被拉入黑洞,而实验室服务器的外网IP是买的弹性IP,然后IP拉入黑洞后被回收重新分配了,这就导致了一个很棘手的问题:虽然系统部署好做,但是域名解析到IP这一步需要通过某某大学的平台提交申请,我这个人有一个很大的缺点就是不愿意去搞这些乱七八糟的申请,因为搞这些手续真的很烦,要看别人脸色不说,处理起来流程也非常繁琐。我对走流程这个事情很反感是有典故的,下面讲段相声:

故事讲完后,回到“域名解析到IP这一步需要通过某某大学的平台提交申请”这一步,既然要提交申请,那如果被攻击后每次公网IP都会发生变化,岂不是每次都得提交申请?我感觉的非常反感和麻烦,使得我不得不思考怎么减缓网站被无情的攻击。经过多方面的了解,也天天看到一些网站上说“套CDN”,就对这一方面了解了一下。这一了解,感觉走进了新大陆,以前只知道域名解析到IP,就能通过域名来访问这个服务器的相关服务,而套了CDN以后,就不一样了。
记录使用多吉云CDN加速自己的博客
什么是CDN
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。要了解更多的CDN相关,推荐看看CDN图解(秒懂 + 史上最全)。
CDN的主要功能虽然是加速访问,但可以在一定程度上减缓DDoS攻击。
- 分布式架构:CDN通过在全球范围内分布多个节点来分散流量,这使得攻击者很难集中攻击一个单一的目标。分布式架构可以吸收和分散大量的恶意流量,从而保护原始服务器。
- 流量过滤:许多CDN提供商会使用高级的流量过滤技术来识别和阻止恶意流量。这些技术可以检测异常流量模式,并在攻击发生时自动启动防护机制。
- 自动扩展:CDN可以动态地调整和扩展其资源,以应对突发的流量激增。这样,即使在遭受DDoS攻击时,服务仍能保持可用。
- 隐藏原始IP地址:通过使用CDN,原始服务器的IP地址可以被隐藏,使得攻击者难以直接攻击到原始服务器。
- 速率限制和速率控制:CDN可以设置速率限制来控制每个IP地址的请求速率,从而防止单个IP地址发送过量请求导致服务器过载。
为什么选择多吉云
国内提供CDN服务的大厂商有很多,比如阿里云、腾讯云、华为云等,这些都是收费的,而且费用还不少,比如阿里云的CDN服务种,下行流量要付费,HTTPS请求要付费,还区分静态与动态HTTPS请求,虽然他特别特别稳定吧,但归根结底也不适合我这种穷光蛋,谁不喜欢不要钱的服务呢。
有了不想花钱的想法,就会积极努力的去寻找怎么能嫖到免费的CDN服务...功夫不负有心人,被我发现了博主W4J1e的文章国内免费CDN和云存储测评分享,顿时眼前一亮,多吉云不就是我梦想中的如意CDN服务商吗?每个月20G的免费流量,200万次的免费https请求数,超出免费额度可以买流量和https的资源包,资源包的价格也比阿里这些便宜不少。
使用多吉云加速自己的博客
为了慎重考虑,我先对自己的博客进行优化,最后再考虑为管理系统加上CDN服务。我的博客是基于typecho搭建的,主题选择的是博主友人c的handsome,如果有相同的同志,可以照着以下步骤进行配置多吉云CDN服务。
注册多吉云并实名认证
登录多吉云的官网,注册后进行实名认证,只有实名认证后,才能获得每月20G免费的流量与200万次的https请求资源包。
配置需要加速的域名
进入融合CDN控制台->域名管理->添加域名,添加域名时,仔细填写相应的信息,需要注意的是,境外流量不支持免费额度,回源协议选项中,如果你的源站配置了SSL证书,可以选择[源站支持 HTTPS,使用 HTTPS 协议回源]。
首次添加该主域名后,需要进行一次域名的所有权验证,确认域名是属于本人的,去自己对应的域名服务商DNS解析中添加相应的TXT记录即可,添加完成后等待几分钟,点击验证即可通过。之后添加相同顶级域名的二级域名不再需要验证。
验证通过后,需要再次通过域名服务商配置DNS的CNAME解析。以我的域名为例,我的域名被CloudFlare接管,前往CloudFlare配置DNS解析即可。等待一段时间,域名的控制面板上会显示“已生效”的字样。此时多吉云CDN服务就已经配置好了。
回源配置
Range回源开启,回源跟随301、302关闭。
缓存与响应
这里的缓存配置很重要,如果不能正确的缓存正确的内容,将会导致很多问题。如果你在使用handsome主题时, 切记不要全站静态缓存 ,使用全站静态缓存时会出现很多问题,包括但不限于:无法登录博客、豆瓣清单显示不了、域名显示未授权、密码文章输入正确密码时显示错误、无法显示最新的评论...仅需要配置以下缓存目录:
/usr/uploads -> 用户的上传文件,绝大部分都是时光机、文章上传的图片/视频/音频等附件内容
/usr/themes/handsome/assets -> 主题的有css、js、fonts、img四个静态资源内容
同时配置缓存以下类型的文件即可:
.jpg;.jpeg;.png;.bmp;.gif;.psd;.ico;.tga;.imb;.tiff;.svg;.woff;
.ttf;.woff2;.css;.js;.txt;.doc;.wri;.docs;.dot;.xml;.log;.bat;.csv
切记不要开启全站静态缓存
访问控制
访问控制中可以设置IP白黑名单、UA白黑名单,同时可以设置QPS限制,限制客户端IP在每一个节点每一秒钟的访问次数,进行高频CC攻击的抵御... 可以根据自己的需求进行设置,特别是QPS限制,如果自己的博客访问量很大,那么这流量那就是哗哗的流,QPS限制可以达到控制流量的作用,控制流量就是节约Money。
性能优化
开启智能压缩即可。
HTTPS配置
如果需要开启HTTPS,需要上传自己的SSL证书。如果没有,可以申请免费的SSL证书,最好是申请泛域名证书,不然每个域名都得申请证书,将会非常麻烦。推荐一种简单、可行、免费申请泛域名证书的方法:10分钟搞定支持通配符的永久有效免费HTTPS证书。有了SSL证书后,上传至多吉云证书管理中,即可选择开始HTTPS,并且打开强制跳转HTTPS即可。
效果检验
使用阿里云网络拨测工具,对域名进行拨测检验,发现解析IP结果并不是你的源站IP,且存在很多个检测结果,说明用户访问的是CDN服务器,而不是源站,即CDN服务生效了。
写在最后
在CDN配置完成后,时光机的上传图片功能突然用不了了,我一度检查了很久,一直以为是CDN配置的问题,还为此请教了友人c大佬,大佬一语道破天机: 确认关闭CDN是正常的吗?
你真的确定是这个地方出了问题吗?思考问题一定要全面,控制变量法排除问题,不要一棒子认为就是这个问题,一味固执死磕,只可能往错误的方向越走越深。遇到问题时,何不跳出固定思维,换一个角度思考问题,也许会有新的收获。后来我发现,这个问题并不是CDN的配置导致的,而是由于宝塔的WAF对参数过长的请求进行了拦截,宝塔把这个请求当成了攻击请求。将URL请求当成白名单即解决了这个问题。
配置完CDN,好像也没有能完全解决DDoS攻击的问题,只要访问的不是缓存中的资源,都是要经过源站的,这么看来,CDN只能有限地缓解DDoS攻击,还是不能彻底避免被打,DDoS真难防啊。讲了这么多,我最后发现提交校园域名解析时,只有解析到IP的选项,啊这...