Ограничить количество посещений (в секунду) сайтов ботом bing в конфигурации nginx
К сайту привязано несколько доменов. Необходимо снизить посещение сайтов (в совокупности) ботами ПС Bing.
Как преобразовать директиву
limit_req_zone $binary_remote_addr zone=one:10m rate=100r/s;
чтобы ограничение действовало не по ip, а по user_agent в котором встречается подстрока "bing"? При превышении количества запросов со стороны этих ботов выдавать ошибку с кодом 429: limit_req_status 429;
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Предположим что мы хотим запросы с User-Agent содержащие слово bing ограничивать 100rps независимо от IP, а все остальные запросы ограничить 100rps на IP.
Можно написать примерно такой конфиг:
map $http_user_agent $limit_key {
default $binary_remote_addr;
"~bing" 1;
}
...
limit_req_zone $limit_key zone=one:10m rate=100r/s;
Документация: