CDN被刷,最大的原罪就是源站的WAF无法得知CDN在被刷,因为它无法回源!
为了节点防刷,所以你需要一台高防大宽带的服务器,配置WAF,并且距离省位置要近。恶意请求基本都是针对图片、CSS、JS 这些静态资源,把静态资源缓存到节点服务器上,不影响源站,也避免高额CDN账单。

但你也别傻呵呵地又开一台大厂地服务器,否则被攻击,没拦截住,又是一套房。找小厂,最多停服,不至于让你后付费。此方案只是为了避免被刷流量导致,如果你节点WAF设置不当也是不行的。
本文要配合下文食用:
初始化Nginx缓存空间
先初始化Nginx缓存空间,在nginx设置中的配置文件http块里加上这段配置:
# 定义缓存路径和缓存区域
proxy_cache_path /www/wwwroot/wxsnotecache levels=1:2 keys_zone=wxsnote_cache:50m inactive=60m max_size=1g;
# 定义缓存键规则
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_path:此指令的作用是设定Nginx缓存内容的存储位置以及相关参数。/www/wwwroot/wxsnotecache:这里指定了缓存文件在服务器文件系统中的存放路径,可自定义。levels=1:2:该参数控制缓存目录的层级结构。具体来说,会生成一级目录(使用1个字符)和二级目录(使用2个字符),这样的结构有助于提升文件系统的性能。keys_zone=wxsnote_cache:50m:创建了一个名为wxsnote_cache的共享内存区域,其大小为50MB。这个区域的用途是存储缓存键和元数据,可自定义。inactive=60m:它定义了缓存项的非活动超时时间。也就是说,如果在 60 分钟内缓存项没有被访问,就会被自动删除,即便它还没有过期,你可以设置为更大的值,支持h就是小时。max_size=1g:对硬盘上缓存数据的最大容量进行限制,当缓存数据达到1GB时,会按照LRU(最近最少使用)算法删除旧的缓存,依据你网站的大小设置,支持m就是MB,最大10GB。
这里要注意,
/www/wwwroot/wxsnotecache这个目录得提前创建好,还得把权限给到www用户,权限755,不然会出问题。
创建网站及配置反向代理
在节点创建一个空白站点,无需PHP和MySQL,但域名要与原域名一致

开启反向代理

修改配置

替换配置文件
注意修改配置,别傻乎乎地直接用

设置SSL证书
把源站得复制过来就行

节点设置hosts
直接访问源站,不走DNS解析

添加hosts,域名以及源站服务器地址

验证效果
配置完得验证下缓存有没有生效。可以看看响应头里的X-Cache-Status字段,如果显示HIT就是命中缓存了,MISS就是首次访问没命中。

或者,如果是PHP网站,添加一个文件,放入代码并访问
<?php
echo "Remote Addr: " . $_SERVER['REMOTE_ADDR'] . "<br>";
echo "X-Forwarded-For: " . $_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>";
?>

设置WAF防止拦截节点
源站服务器设置WAF,先复刻源站或CDN WAF的拦截规则,拦截指定省的IP段就不必了。毕竟我们就是为了防止访客被误拦截。然后开启CDN选项(网站日志中显示节点IP,但WAF和统计插件显示真实IP,拦截和统计都不会拦截你的节点,当然,最好是在节点就拦截住)

除了WAF,你还需让网站解析IP地址,否则你的网站日志会显示节点IP地址

结语
这样就可以避免高额CDN账单和防止拦截网段导致正常访客无法访问了,并且依旧距离省近,加速静态文件,视为一个CDN节点。
你可以设置CC限制,跳转验证5秒盾(你可以使用WAF面板,如雷池waf,宝塔云waf,而不是宝塔面板),静态资源请求速度与宽带,这里就不展示了。
如果你喜欢我的内容,可以赞助我哦!你的一点点心意,是我不断前进的动力!











暂无评论内容