Лучше всего дропать \ логировать на уровне iptables.спасибо, почитаю
# пропускаем ботов (первые правила)
iptables -A INPUT -p tcp --dport 80 --syn -m string --string "yandex.net" --algo kmp -j ACCEPT
iptables -A INPUT -p tcp --dport 80 --syn -m string --string "googlebot.com" --algo kmp -j ACCEPT
# syn это и есть новые соединения. те что keep alive - не подходят под этот критерий
iptables -A INPUT -p tcp --dport 80 --syn -m limit --limit 1/s --limit-burst 3 -j RETURN
это да, но можно использовать только конкретный форкнутый модуль - там китайцы по коду не сильно наворотили, но зато функционал значительно расширяется за счет использования нескольких директив limit_req в одном location-е, что стандартный модуль не умеет (например для авторизированных пользователей одни лимиты, для поисковых ботов другие, а для обычных гостей третьи).Китайские форки nginx стоит применять очень осторожно, по качеству кода они местами довольно стремные, надо быть готовым к неожиданностям.
iptables на большом количестве правил значительно тупит (понятно что есть ipset и другие модули, но простыми средствами белый список большого размера не сделать). Поэтому если стоит задача лимитировать только http трафик, то nginx + модули должно с головой хватить (быстро работает даже с огромными списками ip адреов)Вообще, если не хватает limit_req, имеет смысл перейти на уровень iptables.
Да не совсем правильно написал - надо было "стандартными средствами iptables" + как мне кажется разбирать http трафик лучше более специализированными средствами заточенными под это, к тому же через iptables как мне кажется будет значительно геморройнее различать гостей и авторизированных пользователей если для них нужны будут различные лимиты в добавок к различным лимитам на различные location-ы (типичная задача связанная с лимитированием запросов).А чего такого сложного в ipset?
крупных - да, они смотрят в частности, на скрытие блоков с контентом стилямиа боты поисковиков считывают css и js?
да, но только не каждый стандартный проход, а параллельно и значительно реже идет проверка на клоакинг и там практически с полной поддержкой js и css и как раз в таких случаях по юзерагенту бот выглядит как обычный пользователь. А простой js (типа onclick document.location) понимают уже большинство стандартных ботова боты поисковиков считывают css и js?
Yoskaldyr, из твоих слов выходит, что:Белые списки - это только списки ip (которые можно получить распарсив вывод whois), но точно не списки юзерагентов, которые не имеют смысла, т.к. поисковые боты частенько заходят с юзерагентом обычного браузера (проверка на клоакинг)
только надо статику на отдельный ip вынестиЛучше всего дропать \ логировать на уровне iptables.
Код:# пропускаем ботов (первые правила) iptables -A INPUT -p tcp --dport 80 --syn -m string --string "yandex.net" --algo kmp -j ACCEPT iptables -A INPUT -p tcp --dport 80 --syn -m string --string "googlebot.com" --algo kmp -j ACCEPT # syn это и есть новые соединения. те что keep alive - не подходят под этот критерий iptables -A INPUT -p tcp --dport 80 --syn -m limit --limit 1/s --limit-burst 3 -j RETURN