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. 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 en respuesta a una solicitud. Por ejemplo, las directivas Estas directivas permiten solo una conexión por dirección IP a la vez. Nota En HTTP/2 y HTTP/3, cada solicitud concurrente se considera una conexión separada. Puede haber varias directivas Estas directivas se heredan del nivel de configuración anterior si y solo si no hay directivas Predeterminado 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, el número de conexiones excesivas se contabiliza como de costumbre. Predeterminado http, server, location Establece el nivel de registro deseado para los casos en que el servidor limita el número de conexiones. Establece el código de estado que se devolverá en respuesta a las solicitudes rechazadas. 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: Aquí, la dirección IP del cliente sirve como clave. Tenga en cuenta que en lugar de El tamaño de la variable El tamaño de la variable 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 a todas las solicitudes posteriores. mantiene el resultado de limitar el número de conexiones: Ejemplo de configuración#
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
location /download/ {
limit_conn addr 1;
}
Directivas#
limit_conn#
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /download/ {
limit_conn addr 1;
}
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: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;
}
limit_conn
definidas en el nivel actual.limit_conn_dry_run#
limit_conn_dry_run
on
| off
;limit_conn_dry_run off;
limit_conn_log_level#
limit_conn_log_level
info
| notice
| warn
| error
;limit_conn_log_level error;
limit_conn_status#
limit_conn_zone#
limit_conn_zone $binary_remote_addr zone=addr:10m;
$remote_addr
, aquí se utiliza la variable $binary_remote_addr
.$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.$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.Variables incorporadas#
$limit_conn_status
#PASSED
, REJECTED
, o REJECTED_DRY_RUN