Задача, чтобы на все url вида api.php/api_key=#API_KEY#&method=phone&service=#SERVICE#&country=#COUNTRY# был лимит на количество запросов на адрес по IP. То есть , если пользователь с ip 199.0.0.0 запрашивает api.php/api_key=123&method=phone&service=5&country=6 , то ему нужно ждать секунду, чтобы запросить снова этот url с данными параметрами, а все запросы которые он делает в периоде этой секунды улетали в 429 ошибку. Возможно ли реализовать данный алгоритм средствами nginx? Что нужно поменять в конфиге?
map "$arg_api_key:$arg_method:$arg_service:$arg_country" $limit_first {
default "";
"~*^:phone:~*^:~*^" $binary_remote_addr;
}
map "$arg_activation:$arg_method" $limit_sec {
default "";
"~*^:cancel" $binary_remote_addr;
"~*^:sms" $binary_remote_addr;
}
limit_req_zone $limit_first zone=req_first:10m rate=1r/s;
limit_req_zone $limit_sec zone=req_sec:10m rate=1r/s;