NGINX: Как бороться с явно фиктивным трафиком на сервере, который выполняет безусловное полное перенаправление?

NGINX: Как бороться с явно фиктивным трафиком на сервере, который выполняет безусловное полное перенаправление?

Я столкнулся с довольно интересной проблемой, пытаясь настроить NGinx. Я запустил небольшой веб-сервер, который обслуживает все по HTTPS с NGinx 1.13.8. Как это типично для такой конфигурации, он также прослушивает порт 80 и выполняет полное перенаправление для всех запросов на порт 443 с тем же URI, используя следующий фрагмент конфигурации для достижения этого:

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. Есть ли лучший способ обработки этого трафика, который потенциально не требует глубокой проверки пакетов в брандмауэре?

Связанный контент