NGINX:如何处理发出无条件全面重定向的服务器上明显虚假的流量?

NGINX:如何处理发出无条件全面重定向的服务器上明显虚假的流量?

我在尝试配置 NGinx 时遇到了一个相当有趣的问题。我运行一个小型 Web 服务器,该服务器使用 NGinx 1.13.8 通过 HTTPS 提供所有服务。对于此类配置,它还会监听端口 80,并将所有请求重定向到具有相同 URI 的端口 443,使用以下配置片段来实现此目的:

location / {
    return 301 https://$server_name$request_uri;
}

它本身已经很好地满足了我的需求。但是,我开始收到一些明显虚假且易于识别的流量(大约 5 分钟的随机时间段内,我收到来自看似随机的 IP 的一千个新连接,所有连接在 User-Agent 标头中都有一个公共前缀,所有连接都发出完全相同的请求 ( HEAD / HTTP/1.1),所有连接都保持打开状态直到超时,并且所有连接都不会遵循重定向)。

理想情况下,我希望在识别这些连接后立即关闭它们,以尽量减少它们浪费的资源量。目前,我想出了这个修改后的配置片段来实现这一点:

location / {
    return 301 https://$server_name$request_uri;
}

location = / {
    if ($method = "HEAD") {
        set $drop M;
    }
    if ($http_user_agent ~* "Dalvik/2.1.0 (Linux U ") {
        set $drop "U${drop}";
    }
    if ($drop = "UM") {
        return 444;
    }
}

但是,这似乎不起作用(因为日志仍然显示这些流量峰值完全返回 301。我也尝试在第一个位置块内进行不太具体的匹配(仅在 User-Agent 标头或方法上进行全面匹配),但这似乎也不起作用。

因此,我有两个问题:

  1. 这为什么不起作用?
  2. 有没有更好的方法来处理这种流量,而不需要防火墙的深度数据包检查?

相关内容