Re: geo whitelist для limit_conn
Maxim Dounin
mdounin at mdounin.ru
Wed Sep 19 13:28:54 UTC 2012
Hello!
On Wed, Sep 19, 2012 at 04:01:18PM +0400, Aleksandr Sytar wrote:
> Добрый день,
>
> Решил для создания белого списка адресов к которым применяется
> limit_conn использовать geo модуль, как-то так:
>
> geo $conn_perserver {
> default 32; # 32
> 127.0.0.0.1 -; # no limit
> }
>
> и далее:
>
> limit_conn perip $conn_perserver;
>
> Однако, на стадии тестирования конфига nginx рапортует:
>
> C:\nginx>nginx.exe -t
> nginx: [emerg] invalid number of connections "$conn_perip" in C:\nginx/conf/ngin
> x.conf:76
> nginx: configuration file C:\nginx/conf/nginx.conf test failed
Так и должно быть, в limit_conn не поддерживаются переменные.
Если хочется кого-то не лимитировать, можно для него использовать
пустой ключ, как-то так:
geo $whitelist {
default 0;
127.0.0.1 1;
}
map $whitelist $limit {
0 $binary_remote_address;
1 "";
}
limit_conn_zone $limit zone=perip:10m;
limit_conn perip 32;
Цитата из http://nginx.org/r/limit_conn_zone/ru:
: Ключом является любое непустое значение заданной переменной
: (пустые значения не учитываются).
Maxim Dounin
Подробная информация о списке рассылки nginx-ru