для nginx
скрипт, который формирует список русских ip в файл.
Код
cat russian.pl
#!/usr/bin/perl
use LWP::UserAgent;
# define your nginx stats URL
my $URL = "http://noc.masterhost.ru/allrunet/runet";
my $networks=">/usr/local/etc/nginx/ru_networks";
my $ua = LWP::UserAgent->new(timeout => 30);
my $response = $ua->request(HTTP::Request->new('GET', $URL));
open( RUS,$networks) || die "Can not open $networks \n";
foreach $line (split(/\n/, $response->content)) {
print RUS "$line 0;\n"
}
добавляете проверку этого условия в конфигурацию
Код
geo $SLOW {
default 1;
include ru_networks; #список русских ip с нулём
}
limit_zone one $binary_remote_addr 10m;
и в описание server необходимого домена добавляете
Код
if ($SLOW) {
set $limit_rate 5k;
}
limit_conn one 3;
для ip, не находящихся в данном списке будет ограничение в 5k с каждого соединения при максимальном ограничении в три соединения. Для русских ip ограничение будет только количестве соединений. это мой конфиг, поэтому цифрами играйте как необходимо.