我正在为基本DDoS保护配置nginx.我要使用http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html中所述的limit_conn模块.
特别是我不明白这个例子:
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;
server {
...
limit_conn perip 10;
limit_conn perserver 100;
}
描述为:
For example, the following configuration will limit the number of connections to the server per a client IP and, at the same time, the total number of connections to the virtual host
第一部分很清楚,我允许一个IP最多同时进行10个连接.
但是第二条规则是否意味着我只允许100个服务器连接?因为这样,攻击者仅打开约100个连接,就可以阻止所有人访问服务器,有效地使DDoS攻击成功.
解决方法:
是的,第二条规则意味着您将不允许同时连接到该特定域的100个以上的连接.但是,考虑到每个ip的最大连接数也受到限制,攻击者将需要使用不同的ip来成功进行攻击.
我必须补充一点,limit_conn只是减轻攻击的一种方法,但是不足以减轻真正的DDoS攻击.
您可能需要查看以下nginx指令:limit_req,limit_rate,client_body_timeout,client_header_timeout.
本文将向您展示,为了减轻DDoS攻击,您还有更多工作要做:
https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/
此外,本文还将为您指出一些配置提示:
https://www.nginx.com/blog/tuning-nginx/
希望能帮助到你.