[nginx] Лимитируем по условию

Здесь буду писать о разного рода не стандартных ограничениях и как их решать.

1) Ограничение по user-agent’y:

nginx.conf:

http {
...
   map $http_user_agent $limit_bots {
      default '';
      ~*(yandex|msnbot|yahoo) $binary_remote_addr;
   }
   limit_req_zone $limit_bots zone=bots:10m rate=40r/m;
...
}

vhost.conf:

server {
...
   limit_req zone=bots burst=5 nodelay;
...
}

2) Ограничение для конкретных хостов:

nginx.conf:

http {
...
   # Limit badguys
   geo $limited {
        default 0;
        11.11.11.11/32 1;
   }
   map $limited $limit {
        1 $binary_remote_addr;
         0 "";
   }
   limit_req_zone $limit zone=botsip:5m rate=20r/m;
...
}

vhost.conf:

server {
...
   limit_req zone=botsip burst=5 nodelay;
...
}

3) Ограничение по скорости:

vhost.conf:

server {
...
   limit_rate 1M;
...
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *