起初是用封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层限制。
配置方法:
- #定义一个桶漏
- limit_req_zone $binary_remote_addr zone=one:1m rate=1r/s;
- server {
- location ~ \.php$ {
- limit_req zone=one burst=3 nodelay;# 使用one桶漏
- fastcgi_pass 127.0.0.1:9001;
- fastcgi_index index.php;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
配置说明:
配置使用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拒绝访问
漏桶算法图解
做副业长期赚不到钱的话很容易放弃,特别是对于新手来说,新手刚入行的时候期望值都比较高,以为进来就马上能赚到钱,但是现实却很残酷,很多新手都没能坚持到赚钱的时候。因此,我在朋友圈《加微信》会给大家推荐一些破零项目,钱虽然不多,但是我觉得能让很多新手做副业的信心不那么容易被打垮。
历史上的今天:
- 2024: 阿里云”99计划“是什么?(0)
- 2022: 比网贷更要命的,是人情贷(0)
- 2021: 北互权威发布:遇到不实“网络侵权”如何维权?(0)