Очень краткая заметка с примером как можно ограничить скорость обработки запросов от IP адресов, но исключив при этом роботов с определённым “юзер агентом”.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| # ref: https://gist.github.com/supairish/2951524
# IP адреса в белом списке - для них не будет применяться лимитирование
geo $geo_whitelist {
default 0;
1.2.3.4 1;
2.3.4.5/24 1;
}
# Юзер агенты в белом списке - для них не будет применяться лимитирование
map $http_user_agent $whitelist {
default $geo_whitelist;
~*(google) 1;
}
# Если в белом списке 0, то помещаем "binary IP address" в $limit для применения к ним ограничений
map $whitelist $limit {
0 $binary_remote_addr;
1 "";
}
limit_req_zone $limit zone=perip:30m rate=1r/s;
|