<!-- review: finished -->

<a id="http-limit-conn"></a>

# Limit Conn

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

No se cuentan todas las conexiones. Una conexión se cuenta solo si tiene una solicitud que está siendo procesada por el servidor y la cabecera completa de la solicitud ya ha sido leída.

<a id="configuration-example-25"></a>

## Ejemplo de configuración

```nginx
http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    ...

    server {

        ...

        location /download/ {
            limit_conn addr 1;
        }
```

<a id="directives-26"></a>

## Directivas

<a id="index-0"></a>

<a id="limit-conn-1"></a>

### limit_conn

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_conn` zone number;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | —                           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

Establece la zona de memoria compartida y el número máximo permitido de conexiones para un valor de clave determinado. Cuando se excede este límite, el servidor devolverá el [error](#limit-conn-status) en respuesta a una solicitud. Por ejemplo, las directivas

```nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;

server {
    location /download/ {
        limit_conn addr 1;
    }
```

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

#### NOTE
En HTTP/2 y HTTP/3, cada solicitud concurrente se considera una conexión separada.

Puede haber varias directivas `limit_conn`. Por ejemplo, la siguiente configuración limitará el número de conexiones al servidor por IP de cliente y, al mismo tiempo, el número total de conexiones al servidor virtual:

```nginx
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn_zone $server_name zone=perserver:10m;

server {
    ...
    limit_conn perip 10;
    limit_conn perserver 100;
}
```

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

<a id="index-1"></a>

<a id="limit-conn-dry-run"></a>

### limit_conn_dry_run

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_conn_dry_run` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `limit_conn_dry_run off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location               |

Habilita el modo de prueba en seco. En este modo, el número de conexiones no está limitado, sin embargo, en la [zona de memoria compartida](#limit-conn-zone), el número de conexiones excesivas se contabiliza como de costumbre.

<a id="index-2"></a>

<a id="limit-conn-log-level"></a>

### limit_conn_log_level

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_conn_log_level` `info` | `notice` | `warn` | `error`;   |
|--------------------------------------------------------------------------------------------|----------------------------------------------------------------|
| Predeterminado                                                                             | `limit_conn_log_level error;`                                  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                         |

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

<a id="index-3"></a>

<a id="limit-conn-status"></a>

### limit_conn_status

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_conn_status` code;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | `limit_conn_status 503;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location      |

Establece el código de estado que se devolverá en respuesta a las solicitudes rechazadas.

<a id="index-4"></a>

<a id="limit-conn-zone"></a>

### limit_conn_zone

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `limit_conn_zone` key zone = name:size;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------|
| Predeterminado                                                                             | —                                         |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http                                      |

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 su combinación. Las solicitudes con un valor de clave vacío no se contabilizan.

Ejemplo de uso:

```nginx
limit_conn_zone $binary_remote_addr zone=addr:10m;
```

Aquí, la dirección IP del cliente sirve como clave. Tenga en cuenta que en lugar de `$remote_addr`, aquí se utiliza la variable `$binary_remote_addr`.

El tamaño de la variable `$remote_addr` puede variar de 7 a 15 bytes. El estado almacenado ocupa 32 o 64 bytes de memoria en plataformas de 32 bits y siempre 64 bytes en plataformas de 64 bits.

El tamaño de la variable `$binary_remote_addr` es siempre 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 aproximadamente 32 mil estados de 32 bytes o aproximadamente 16 mil estados de 64 bytes. Si el almacenamiento de la zona se agota, el servidor devolverá el [error](#limit-conn-status) a todas las solicitudes posteriores.

<a id="built-in-variables-2"></a>

## Variables incorporadas

<a id="v-limit-conn-status"></a>

### `$limit_conn_status`

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