Здесь буду писать о разного рода не стандартных ограничениях и как их решать.
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;
}
Спасибо за поправку.
Больое спасибо за статью автору и комментатору, очень помогли.