解释nginx中的limit_conn_zone $server_name是什么意思

8

我正在为基本DDoS保护配置nginx。我想使用limit_conn模块,如http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html中所述。

特别是我不理解这个例子:

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;
}

描述如下:
例如,以下配置将限制每个客户端 IP 对服务器的连接数,并且同时限制对虚拟主机的总连接数。
第一部分很清楚,我允许一个 IP 地址最多有 10 个并发连接。
但是,第二条规则是否意味着我仅允许对我的服务器进行 100 次连接?因为如果是这样,攻击者只需打开 ~100 个连接,就会阻止每个人访问服务器,从而成功发动 DDoS 攻击。

是的。但这只是一个例子,你不必复制它。 - Alexey Ten
1个回答

8

是的,第二个规则意味着您将允许该特定域名最多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/

希望对您有所帮助。


2
在这个上下文中,“connection”是什么意思? 我将变量设置为1,仍然能够立即打开多个选项卡来访问我的网站。我还可以打开和维护多个套接字连接。 - Esqarrouth
@achhainsan 没必要冒犯 :/ 我认为我的回答回应了用户的问题,因为对他来说在那个特定情况下limit_conn指令的工作方式不太清楚。虽然我不是Nginx专家,但我有一些经验,如果你认为我应该在回答中加入更多细节或者一些例子,我会很乐意这样做。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接