запрет фальшивых Googlebot
Autopilot
nginx-forum на nginx.us
Пт Окт 9 10:36:48 UTC 2015
Недавно подопечные сервера начали перегружаться по DDoS, как правило, с
одного ip из примерно 3000 шел один запрос на произвольную страницу одного
из сайтов сервера с user agent Googlebot. IP не принадлежал сетям Google.
Появилась идея опознать бота и разрешить доступ только для сетей google.
Конструкция вида if ($http_user_agent ~* googlebot ) { deny all; allow
GOOGLENETS;} не разрешается. На основе ветки
http://forum.nginx.org/read.php?2,202715,202715#msg-202715 и статьи хабра
был составлен рецепт
http {
#...
geo $bot_ip {
default 0;
216.239.32.0/19 1;
64.233.160.0/19 1;
66.249.80.0/20 1;
66.249.64.0/19 1;
72.14.192.0/18 1;
209.85.128.0/17 1;
66.102.0.0/20 1;
74.125.0.0/16 1;
64.18.0.0/20 1;
207.126.144.0/20 1;
173.194.0.0/16 1;
}
map $http_user_agent $is_bot {
default 0;
~Googlebot 1;
}
map "$is_bot:$bot_ip" $fake_bot {
default 0;
"1:0" 1;
}
# ...
server {
#...
if ($fake_bot) {
return 418;
}
#...
}
#...
}
Код ошибки выбран для парсинга логов на предмет новых ip гугла.
Привел тут как пример решения задачи и для поиска более оптимальных решений
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,262080,262080#msg-262080
Подробная информация о списке рассылки nginx-ru