Dram

Рейтинг
1114
Регистрация
28.06.2008

Не так не прокатит. Нужно сначала объявить какую куку ищем, потом ее и проверять, щас подумаю....

---------- Добавлено 22.01.2017 в 22:11 ----------

Вот как надо

map $http_cookie $cookie {
default 0;
~somecookie 1;
}

map "$whitelist:$server_protocol:$cookie" $limit3 {
default 0;
"0:HTTP/1.1:0" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

пошел пробовать :)

---------- Добавлено 22.01.2017 в 22:16 ----------

Че то перемудрил - добавил это в конфиг и сам получил 503 на первом же перезапуске страницы, а мой то браузер делал запрос по HTTP/2.0 и вообще не дожен было попасть под условие.

---------- Добавлено 22.01.2017 в 22:23 ----------

Изменил код так

map "$whitelist:$server_protocol:$cookie" $limit3 {
default 0;
"0:HTTP/2.0:1" "";
"0:HTTP/1.1:1" "";
"0:HTTP/1.1:0" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Вроде все ок, пошел смотреть за логами

---------- Добавлено 22.01.2017 в 22:27 ----------

Нет - где-то ошибка, 503 ошибку стали получать даже боты из белого списка

Смотрите что сваял в плане добавить к коду выше. 99.8% ботов лезут по протоколу HTTP/1.1

Не могу че то понять как тут указать что если нет куки - то binary_remote_addr?

map "$whitelist:$server_protocol:$http_cookie" $limit3 {
default 0;
"0:HTTP/1.1:~somecookie" "$binary_remote_addr";
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Спс за идею + эта мысль повесить куку не обязательно к какртинке - просто куку и тормозить тех кто ее не имеет. (если он не из белого списка естественно)

Dimka - я тоже нашел эту статью на Хабре, не нравится мне этот метод. Примерно 2% юзеров юзают сайт без кук, не хочу их банить

smbbws я бы хотел вычеслять ботов НЕ ЗАГРУЖАЮЩИХ ксс, а не тормозить загрузку статики для всех :))) Что за бред вы предлагаете?

Походу тема пошла в массы - раньше я шлак чистил раз в день, пару недель назад уже дважды в день, и вот второй день приходится заходить каждые пол часа или весь топ в Якубовичах. Я в шоке господа!

Я бы сюда еще добавил бы блокирование ботов, которые на запрашивают css и js, только пока не придумал как это реализовать в NGINX. Возможно ли это?

adel92:
Ограничьте кол-во подключений в минуту, в час.В чем сложность то?

Да, вероятно вы правы, я поэтому и не врубался в limit_conn_zone потому что она по сути дублирует то, что умеет limit_req_zone

Вот тут я привел свой конфиг + к нему я и хотел бы добавить еще один лимит на 1000 подключений с одного IP в день, чтобы слать лесом "медленных" ботов, которые проходят остальные фильтры.

ad77root:
ну так а кто мешает указать rate?

То, что согласно спецификации limit_conn + rate не используются.

Короче вероятнее всего это хозяйство ограничивает единовременное подключение и приспособить его для ограничения по шаблону

кол-во/часы

невозможно :(

Всего: 6924