Есть ли какая-либо служба, которую я мог бы использовать, чтобы ограничить пользовательский запрос на флуд
Я использую облачную базу данных, облачность, если быть точным, она может предоставить каждому пользователю доступ к базе данных с хорошей системой авторизации.
Однако это также услуга, которая хорошо масштабируется и учитывает счета по каждому доступу к серверу, 0,0015$ за 500 запросов на получение.
Так что я думал о любом сервисе, который будет работать как прокси или CDN или брандмауэр, который я мог бы ограничить частоту доступа пользователей в минуту
Например, я хотел бы отклонить пользователя, если этот человек делает более 20 запросов в минуту или более 2 запросов в секунду, что-то в этом роде, чтобы я мог защитить какого-то пользователя от попытки отправить запрос в мой сервис
Есть ли такой сервис? Как это называется? И что-нибудь вы можете мне предложить?
большое спасибо
1 ответ
Некоторые CDN, вероятно, предлагают это, но вам придется связаться с их отделами продаж / поддержки или проверить документацию. Однако, если у вас есть доступ к серверу, на котором вы можете установить nginx, у него есть функции ограничения запросов, которые могут делать именно то, что вы хотите.
Он находится в модуле " Limit Req". Некоторые конфигурации, которые могут работать в вашем случае:
http {
limit_req_zone $binary_remote_addr zone=dbzoneip:10m rate=2r/s;
# or limit_req_zone $binary_remote_addr zone=dbzoneip:10m rate=20r/m;
# You can set this up if you want to limit total requests,
# regardless of the incoming IP
limit_req_zone $server_name zone=dbzoneserver:10m rate=100r/m;
# this would be for whatever the path is to the db API
location /db/ {
# now we use it
# check docs to determine if you want to enable bursting
# which allows you to buffer a small number of requests
limit_req zone=dbzoneip;
# comment this out if you just want to limit particular users
limit_req zone=dbzoneserver;
proxy_pass https://url_or_ip_of_cloudant;
}
}