Limit Conn#
O módulo é usado para limitar o número de conexões por chave definida, em particular, o número de conexões de um único endereço IP.
Nem todas as conexões são contadas. Uma conexão é contada apenas se ela tiver uma requisição sendo processada pelo servidor e todo o cabeçalho da requisição já tiver sido lido. Define a zona de memória compartilhada e o número máximo permitido de conexões para um determinado valor de chave. Quando este limite é excedido, o servidor retornará o erro em resposta a uma requisição. Por exemplo, as diretivas permitem apenas uma conexão por endereço IP por vez. Nota No HTTP/2 e HTTP/3, cada requisição simultânea é considerada uma conexão separada. Pode haver várias diretivas Essas diretivas são herdadas do nível de configuração anterior se e somente se não houver diretivas Habilita o modo de execução a seco. Neste modo, o número de conexões não é limitado, porém, na zona de memória compartilhada, o número de conexões excessivas é contabilizado normalmente. Padrão http, server, location Define o nível de log desejado para casos quando o servidor limita o número de conexões. Define o código de status a ser retornado em resposta a requisições rejeitadas. Define parâmetros para uma zona de memória compartilhada que manterá estados para várias chaves. Em particular, o estado inclui o número atual de conexões. A chave pode conter texto, variáveis e sua combinação. Requisições com valor de chave vazio não são contabilizadas. Exemplo de uso: Aqui, um endereço IP do cliente serve como chave. Note que ao invés de O tamanho da variável O tamanho da variável Uma zona de um megabyte pode manter cerca de 32 mil estados de 32 bytes ou cerca de 16 mil estados de 64 bytes. Se o armazenamento da zona for esgotado, o servidor retornará o erro para todas as requisições subsequentes. mantém o resultado da limitação do número de conexões: Exemplo de Configuração#
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
...
location /download/ {
limit_conn addr 1;
}
Diretivas#
limit_conn#
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location /download/ {
limit_conn addr 1;
}
limit_conn
. Por exemplo, a seguinte configuração limitará o número de conexões ao servidor por IP do cliente e, ao mesmo tempo, o número total de conexões ao 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 no nível atual.limit_conn_dry_run#
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
, a variável $binary_remote_addr
é usada aqui.$remote_addr
pode variar de 7 a 15 bytes. O estado armazenado ocupa 32 ou 64 bytes de memória em plataformas de 32 bits e sempre 64 bytes em plataformas de 64 bits.$binary_remote_addr
é sempre 4 bytes para endereços IPv4 ou 16 bytes para endereços IPv6. O estado armazenado sempre ocupa 32 ou 64 bytes em plataformas de 32 bits e 64 bytes em plataformas de 64 bits.Variáveis Integradas#
$limit_conn_status
#PASSED
, REJECTED
, ou REJECTED_DRY_RUN