Nginx(防止压力测试的恶意攻击)

来自Linux78|wiki

ab压力测试工具命令:

ab -c 100 -n 1000 http://127.0.0.1/index.html

防止压力测试的恶意攻击的思路:

nginx限制同一个IP的并发最大为10, vi /usr/local/nginx/conf/nginx.conf 在http{} 字段第一行添加: limit_conn_zone $binary_remote_addr zone=one:10m; 在对应的server{}里添加: limit_conn one 10; 最后重启nginx

也是在 http 段加上:(这样对配置文件里面所有的 server 段都生效)

limit_req_zone $binary_remote_addr zone=qps:1m rate=1r/s;

然后在 server 或 location 段加上:

limit_req zone=qps burst=5 nodelay; $binary_remote_addr //获取访客 ip zone=qps:1m //qps 是自定义名称,随便写;1m是内存,如果 nginx收到了超过设置的请求,会把请求放到内存里,处理好前面的请求了在处理内存中的请求(也可以丢弃) rate=1r/s; 平均每秒钟一个 ip 不能超过 1 个请求,可以根据实际情况更改。 zone=qps //和上面的一样,是自定义的名称,但是两个地方要一样。 burst=5 //上面说了平均每分钟一个 ip 不能超过 1 个请求,这里的 5 是突发情况下不能超过 5 个请求。 nodelay; //上面说如果 nginx接受到了超过设置的请求,会把请求放到内存了,处理好前面的了再处理内存里面的,如果不加这个参数,则会丢弃超过设置的请求,然后返回一个状态码,默认是 503 。 error_page 503 /403.html; limit_req zone=qps burst=5 nodelay; limit_req_status 503;