пожалуйста😊
Есть такой блок:
map $http_key $base {
default 0;
"123" $binary_remote_addr;
}
map $base $limit {
0 $binary_remote_addr;
1 "";
}
limit_req_zone $limit zone=one:100m rate=1000r/m;
limit_req zone=one burst=30;
limit_req_log_level info;
limit_req_status
Работает так:
Если запрос с определенным $http_key (123, в примере), то никаких ограничений по скорости не применяется.
Для всех остальных выставляется лимит в 1000r/m
Не могу понять логику, если засылаем при запросе кей 123, то после первого маппинга
map $http_key $base {
default 0;
"123" $binary_remote_addr;
}
$base = $binary_remote_addr;
и при втором маппинге, если $base равняется 1, то в $limit записывается пустая строка.
map $base $limit {
0 $binary_remote_addr;
1 "";
Вопрос - после первого маппинга $base же равняется $binary_remote_addr, но при этом во втором проверяется равняется ли $base 0 либо 1., как в таком случае срабатывают ограничения?
Что-то вы нагородили. У вас $base не может равняться 1 никак.
Обсуждают сегодня