- A+
所属分类:技术分享
nginx网站被cc攻击怎么办?今天讲的是基于 Nginx 的缓解攻击策略,就是限制并发和 UA 访问。
一、限制单 IP 访问者并发数量:
修改 nginx.conf,在其中合适的地方加入如下内容:
limit_conn_zone $binary_remote_addr zone=perip:10m;
如下图:
然后修改你的站点配置,在其中 server 段加入如下内容:
limit_conn perip 10; limit_rate_after 1m; limit_rate 300k;
简单来说就是加到你 listen 80; 这句的下面,这里的 10 就是单 IP 的并发数量,1M 和 300K 是在 1M 之前不限速、1M 以上就显示每个并发 100K 。然后检查一下 nginx 配置是否有问题:
/usr/local/nginx/sbin/nginx -t
如果如下图就说明没问题:
如果有问题就自行检查一下,没问题就重载 nginx 即可:
/etc/init.d/nginx reload
二、限制个别 UA 进行访问:
这个相对简单,直接修改你的站点配置、在其中加入如下:
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 403; } if ($http_user_agent ~* (Bench|bench|Apache|apache) ) { return 444; }
这里屏蔽了 GET、HEAD、POST 等请求方式,同时禁止部分 UA 访问(返回444),更多的 UA 可以自己添加到如上后重载 nginx 即可生效使用、你可以顺便测试自己是否成功 。。
小结
配合前几篇文章来说,可以有效阻止多并发的而已访问。但是还是只能防住一些压力测试党 ...