Назад | Перейти на главную страницу

Программная блокировка URL-адреса для ограничения скорости, разблокировка или истечение срока блокировки

Мои требования заключаются в том, чтобы иметь возможность ограничивать скорость или временно жестко блокировать любые запросы к нашему серверу для определенного URL-адреса, если клиент отправляет более x запросов в час.

Существует около 250 тысяч URL-адресов, которые потенциально могут быть заблокированы.

У клиентов есть уникальные URL-адреса, по которым они тоже публикуют http-сообщение, например:

customer1.example.com/post/location/36A107F4-DD68-47F2-A093-753F7A427CF6/

Где customer1 - это имя покупателя, а 36A107F4-DD68-47F2-A093-753F7A427CF6 - их уникальный гид по местоположению.

Я хочу, чтобы мое приложение могло выполнить какой-то вызов API для блокировки заданного URL-адреса, а затем либо использовать вызов API, чтобы разблокировать, либо срок действия блока истекает через x минут.

Возможно ли это с любым сервисом с открытым исходным кодом, таким как haproxy или nginx?

Вот несколько идей ... они не относятся к nginx или HAProxy, но, возможно, вы могли бы использовать те же идеи.

Эта статья обсуждает, как они используют Varnish для реализации ограничения скорости URL-адреса для приложения. Приложение взаимодействует с Varnish, используя собственный HTTP-заголовок, а не вызов API, но идея аналогична.

Используя Apache, вы могли бы сделать нечто подобное, используя программный RewriteMap... искать запросы в базе данных, а для тех, которые в настоящее время ограничены по скорости, переписать их на страницу с ошибкой, в противном случае передать их без изменений. Включение / выключение ограничения скорости для определенного URL-адреса будет простым изменением одной строки в базе данных.