Кейс следующий:
Есть запросы к API с передачей уникального токена в GET параметре. По этому токену (user_token=) имеются лимиты на запросы через limit_req_zone, типа такого:
limit_req_zone $arg_user_token zone=token5:10m rate=12r/m;
Необходимо для некоторых токенов отключить лимиты. Тут на помощь и приходит модуль map nginx. Он позволяет динамически получать переменную, значение которой будет зависеть от значений других, входных, переменных. Т.е., грубо говоря, мы имеем
function(a, b) { … return c }
Итак, лимит по токену срабатывает, если в запросе имеется значение переменной user_token. Как сделать так, чтобы убрать лимит? Надо чтобы для модуля limit_req_zone переменной не существовало, а точнее $arg_user_token оказалась пустой
map $arg_user_token $token_limit {
default $arg_user_token; # по-умолчанию на выход отдаём входящее значение
"11112222abc" ""; # а для этого токена вернём пустую строку
}
И переделываем лимит под новую переменную $token_limit
limit_req_zone $token_limit zone=token5:10m rate=12r/m;