网站除CDN外,另一种防DDOS的手段

2022年9月27日20:00:42 发表评论

起初是用封IP来解决被DDOS,但这也属于治标不治本,攻击者手中可不止一台机器。出了使用CDN这个手段,其实还可以通过PHP应用层做限制。(毕竟CDN是需要钱的)流量一大烧的就是钱。

下面我收集的几种防DDOS的方法,记录供大家参考。

1、Nginx层限制

做法:设置nginx配置,利用nginx的桶漏算法对IP访问限制(下方有漏桶算法的解释)

优点:简单设置基本不需要任何成本、稳定、而且不占用php-fpm进程资源

缺点:只能按照nginx方式去做限制访问

2、在PHP应用层做限制

做法:设置nginx配置,利用nginx的桶漏算法对IP访问限制

有点:简单设置基本不需要任何成本、稳定、而且不占用php-fpm进程资源

缺点:只能按照nginx方式去做限制访问

3、接入CDN

最简单有效的方法,但是需要付费。通常大流量DDOS攻击都会采用CDN来抗下。

注意:国内CDN防护,没有备案无法使用

以上三个防护措施,我选择了Nginx层限制。

配置方法:

  1. #定义一个桶漏  
  2. limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s;  
  3. server {  
  4.         location ~ \.php$ {  
  5.                         limit_req zone=one burst=3 nodelay;# 使用one桶漏  
  6.                         fastcgi_pass   127.0.0.1:9001;  
  7.                         fastcgi_index  index.php;  
  8.                         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;  
  9.                         include        fastcgi_params;  
  10.         }  

配置说明:

配置使用limit_req_zone定义了一个桶漏

$binary_remote_addr 是根据访问IP生成的桶漏,zone=one 定义了桶漏的名称为one, 1m表示定义这个桶漏为1mb内存空间存放访问信息,rate=1r/s 是每个ip每秒处理1次并发数,这些都可以根据自己任意更改。

因为很多爬虫过多访问耗尽了我的 php-fpm 进程,所以我只对访问php文件做了限制limit_req zone=one burst=3 nodelay;

这里是使用上面定义的one桶漏,桶的容量是3,也就是说每个桶每秒处理一个请求,如果单个IP并发超过1个的话其它的会缓存在桶内,但是桶的容量只有,如果并发是3,处理1个请求两个会被缓存等待处理(这里用nodelay回被同时处理),如果并发超过3个水桶的水会溢出,访问直接503拒绝访问

漏桶算法图解

网站除CDN外,另一种防DDOS的手段

Tips:

做副业长期赚不到钱的话很容易放弃,特别是对于新手来说,新手刚入行的时候期望值都比较高,以为进来就马上能赚到钱,但是现实却很残酷,很多新手都没能坚持到赚钱的时候。因此,我在朋友圈《加微信》会给大家推荐一些破零项目,钱虽然不多,但是我觉得能让很多新手做副业的信心不那么容易被打垮。

掘金网
  • 版权声明:本文源自 网络, 如有侵权请联系!
  • 本文链接:http://jjsoho.com/lyfddos/ 网赚有风险,投资需谨慎!