Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как при limit_req_zone игнорировать IP?

Ребяты, нужна хелпа.
В nginx стоит защита limit_req_zone по установленному языку в браузере $http_accept_language
Вот пример
map $http_accept_language $locale_bad_country {
        default "";
        "~^zh"  "1";
        "~^en"  "1";
    }


limit_req_zone $locale_bad_country zone=external:10m rate=1000r/m;

limit_req zone=external burst=1000 delay=500;

Все прекрасно работает и так как надо, проблема в том что фильтруется и google bot у которого айпишники 66.249.70.0/24

Реально ли игнорить правила для гугл бота?
Как я понимаю нужно создать еще один map для переопределения locale_bad_country уже на основе IP адреса клиента? Я просто не знаю будет ли это работать и как правильно...

Сугубо по моей логике хочется сделать так
map $http_accept_language $locale_bad_country {
        default "";
        "~^zh"  "1";
        "~^en"  "1";
    }

map $binary_remote_addr $locale_bad_country {
        default "";
        "66.249.70.*"  "";
    }

Но
1. Возможно ли переопределение переменной таким образом я не знаю
2. По логике так как во втором map default "", то первый map вообще работать не будет (по факту)

В общем моя логика как всегда не работает и быть может кто нибудь подскажет как осуществить задуманное и возможно ли это вообще?

Или делать уже как то так?
map $http_accept_language:$binary_remote_addr $locale_bad_country {
        default "";
        "~^zh:*"  "1";
        "~^en:*"  "1";
        "~^en:66.249.70.*"  "";
    }
  • Вопрос задан
  • 36 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
binary_remote_addr выглядит по-другому, он же binary. Ваш "66.249.70.*" с ним не проканает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы