Limit Conn#

El módulo se utiliza para limitar el número de conexiones por clave definida, en particular, el número de conexiones desde una única dirección IP.

Ejemplo de Configuración#

stream {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        limit_conn           addr 1;
        limit_conn_log_level error;
    }
}

Directivas#

limit_conn#

Sintaxis

limit_conn zone number;

Predeterminado

Contexto

stream, server

Establece la zona de memoria compartida y el número máximo permitido de conexiones para un valor de clave dado. Cuando se excede este límite, el servidor cerrará la conexión. Por ejemplo, las directivas

limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    ...
    limit_conn addr 1;
}

permiten solo una conexión por dirección IP a la vez.

Cuando se especifican varias directivas limit_conn, se aplicará cualquier límite configurado.

Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas limit_conn definidas en el nivel actual.

limit_conn_dry_run#

Sintaxis

limit_conn_dry_run on | off;

Predeterminado

limit_conn_dry_run off;

Contexto

stream, server

Habilita el modo de prueba. En este modo, el número de conexiones no está limitado, sin embargo, en la zona de memoria compartida, el número de conexiones excesivas se contabiliza como de costumbre.

limit_conn_log_level#

Sintaxis

limit_conn_log_level info | notice | warn | error;

Predeterminado

limit_conn_log_level error;

Contexto

stream, server

Establece el nivel de registro deseado para los casos en que el servidor limita el número de conexiones.

limit_conn_zone#

Sintaxis

limit_conn_zone key zone = name:size;

Predeterminado

Contexto

stream

Establece parámetros para una zona de memoria compartida que mantendrá estados para varias claves. En particular, el estado incluye el número actual de conexiones. La clave puede contener texto, variables y sus combinaciones. Las conexiones con un valor de clave vacío no se contabilizan.

Ejemplo de uso:

limit_conn_zone $binary_remote_addr zone=addr:10m;

Aquí, la dirección IP del cliente se establece mediante la variable $binary_remote_addr.

El tamaño de $binary_remote_addr es de 4 bytes para direcciones IPv4 o 16 bytes para direcciones IPv6. El estado almacenado siempre ocupa 32 o 64 bytes en plataformas de 32 bits y 64 bytes en plataformas de 64 bits.

Una zona de un megabyte puede mantener alrededor de 32 mil estados de 32 bytes o alrededor de 16 mil estados de 64 bytes. Si el almacenamiento de la zona se agota, el servidor cerrará la conexión.

Variables Integradas#

$limit_conn_status#

mantiene el resultado de limitar el número de conexiones: PASSED, REJECTED o REJECTED_DRY_RUN