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

NGINX - дросселирование запросов для предотвращения злоупотреблений

Причина, по которой я хочу это сделать, заключается в том, что пользователи разрабатывают против нашего API с помощью JavaScript, а некоторые разработчики ошибаются и заставляют посетителей захлопывать сервер запросами AJAX. Когда это произойдет, я хочу иметь возможность ограничивать запросы API, чтобы, возможно, 50 запросов в минуту, Или что-то в этом роде.

Примечание: (особенно ресурсы с интенсивным использованием БД, поэтому, возможно, на уровне пути, а не на уровне сервера (например, throttle "/ json_api /", но не "/ static /").

Это можно сделать с помощью LimitReqModule с Nginx. Однако, если это для обратного прокси, вы можете попробовать новый ограничение скорости поддерживается HAProxy.

Я обнаружил, что ограничение скорости nginx немного сбивает с толку чтобы получить желаемую ставку.

Но в основном у вас есть что-то вроде:

limit_req_zone  $binary_remote_addr  zone=default:10m   rate=50r/m;

в http раздел, а затем что-то вроде следующего в location раздел внутри server раздел:

limit_req zone=default burst=10 nodelay;

Чтобы не было для определенного раздела вроде /static вы бы просто сделали это отдельным location и не включать его limit_req директива (или обратная).