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