Категорії
Misc, staff, other WWW

[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;
...
}

3 коментарі “[nginx] Лимитируем по условию”

Во втором случае конфиг можно сократить, объединив geo и map:

geo $limit {
default “”;
11.11.11.11/32 $binary_remote_addr;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff