在Nginx中解释limit_conn_zone $server_name

我正在为基本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/

希望能帮助到你.

上一篇:如何使用IBM Cloud上的CIS服务防护DDoS攻击


下一篇:阿里云服务器DDoS基础防护设置及常见问题