小编rad*_*ant的帖子

被 HEAD 请求淹没

我们的服务器被 HEAD 请求淹没。

这导致 TCP 连接数激增,导致服务器无法连接到其 mysql 数据库。

我们广泛使用 nginx 速率限制,它与fail2ban 完美结合,适用于任何 GET 和 POST 请求。然而,HEAD 请求似乎没有被接受。

我们使用的fail2ban filter.d 操作似乎nginx-limit-req是一个库存配置,用于检测何时达到nginx 区域限制。

由于我们的 Web 应用程序不需要 HEAD 请求,因此我们有两个选择(除了手动禁止单个 IP 地址之外)

  1. 有没有办法禁用 HEAD 请求?看起来似乎很沮丧,但这可能吗?
  2. 是否可以使 nginx 区域限制器识别任何 GET/POST/HEAD 请求并相应地限制它?

nginx.conf:

http {
  ...
  limit_req_zone "$http_x_forwarded_for" zone=web_zone:50m rate=2r/s;
  ...
}

server {
  ...
  fastcgi_buffers 16 16k;
  fastcgi_buffer_size 32k;

  location / {
    limit_req zone=web_zone burst=25;
    try_files $uri $uri/ @pretty-urls;
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

监狱.conf:

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
action = custom-iptables-proxy …
Run Code Online (Sandbox Code Playgroud)

nginx fail2ban rate-limiting

3
推荐指数
1
解决办法
1802
查看次数

标签 统计

fail2ban ×1

nginx ×1

rate-limiting ×1