Причина, по которой я хочу это сделать, заключается в том, что пользователи разрабатывают против нашего 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
директива (или обратная).