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