map $http_user_agent $is_search_bot {
default 0;
~*(YandexBot|YandexMobileBot|Googlebot|GoogleOther|YandexMetrika|YandexAccessibilityBot|YandexRenderResourcesBot) 1;
}
# Разрешенные языки браузера, которые не должны ограничиваться в req_limit_zone.
map $is_search_bot:$http_accept_language $access_locale_browser {
# По умолчанию под req_limir_zone подпадают все
default "1";
# Если это разрешенные боты Google и Yandex
"~^1:en" "0";
"~^1:ru" "0";
# Если в браузере установлен русский язык
"~^0:ru" "0";
}
en-US,zh;q=0.5
и при таком найдется она?~^zh:0
только если она вначале zh-**,en;q=0.5
map $http_user_agent $is_search_bot {
default 0;
~*(Googlebot|GoogleOther) 1;
}
map $http_accept_language:$is_search_bot $locale_bad_country {
default "";
"~^zh:0" "1";
"~^en:0" "1";
}
Просто вполне реально что у ддосера js вовсе выключен и тупо сразу его редиректить куда то подальше...
Так же сейчас уменьшил бан-разбан до 30 секунд, вот почему:
За сутки при выборочном переборе айпишников ддосера понял что, он ддосит все время с разных ip, и за сутки они не дублировались ни разу, тогда и смысла нет их хранить долго.
Второе, саме тяжеловесные запросы в базу идут по javascript, собственная коллекция аналитики на миллиона строк за месяц. И если просто тупо банить ip через fail2ban, то доссер только к серверу подрубается, делает пару запросов в базу, ловит бан и до аналитики не доходит. Ну получается просто бан-разбан идел и никакого вреда причинить не может, сервера выыдерживают. Единственно что меня мучает, так это то что постоянная запись-удаление айпишников идет на сервере, ну и nginx логи летатят как не в себя=)
Если бы можно было узнать включен ли javascript с помощью nginx, я бы сделал так что даже банить не пришлось во время нагрузок, и тупо на страницу пустышку редиректил такие запросы.