O NGINX é um servidor web de alto desempenho, proxy reverso, bem como um servidor proxy de email e um balanceador de carga amplamente utilizado. Ele é conhecido por sua estabilidade, desempenho excepcional e recursos avançados, sendo usado por uma ampla gama de aplicativos e serviços na internet.
Uma das questões mais comuns enfrentadas por desenvolvedores e administradores é lidar com o tempo limite de solicitações em ambientes NGINX.
Este artigo tem como objetivo explorar diferentes maneiras de aumentar o tempo limite de solicitação no NGINX, fornecendo exemplos e concluindo com a importância de ajustar esses valores de acordo com as necessidades específicas do seu aplicativo ou serviço.
Aumentando o tempo limite de solicitação
O tempo limite de solicitação no NGINX é controlado por uma série de diretivas que podem ser ajustadas em diferentes níveis: globalmente, para um bloco específico do servidor, ou mesmo para um local específico. Vamos examinar algumas das principais diretivas e como usá-las para aumentar o tempo limite de solicitação:
- client_body_timeout e client_header_timeout
Essas diretivas controlam o tempo limite para a leitura do corpo da solicitação e dos cabeçalhos da solicitação, respectivamente. Ambas são configuradas em segundos e podem ser usadas nos blocos “http”, “server” e “location”. Por exemplo, para aumentar o tempo limite do corpo da solicitação para 120 segundos e o tempo limite do cabeçalho para 60 segundos em um bloco de servidor específico, você pode usar a seguinte configuração:
server {
...
client_body_timeout 120;
client_header_timeout 60;
...
}
- keepalive_timeout
A diretiva keepalive_timeout controla o tempo limite para manter uma conexão ativa entre o cliente e o servidor. O valor é definido em segundos e pode ser ajustado nos níveis “http” e “server”. Para aumentar o tempo limite de conexão ativa para 75 segundos, você pode usar a seguinte configuração:
http {
...
keepalive_timeout 75;
...
}
- send_timeout
A diretiva send_timeout controla o tempo limite para enviar uma resposta ao cliente. O valor é configurado em segundos e pode ser usado nos blocos “http”, “server” e “location”. Por exemplo, para aumentar o tempo limite de envio para 180 segundos em um bloco de localização específico, você pode usar a seguinte configuração:
location /example {
...
send_timeout 180;
...
}
- proxy_read_timeout e proxy_connect_timeout
Quando o NGINX atua como um proxy reverso, as diretivas proxy_read_timeout e proxy_connect_timeout são usadas para controlar o tempo limite de leitura e conexão com servidores upstream, respectivamente. Ambas são configuradas em segundos e podem ser usadas nos blocos “http”, “server” e “location”. Para aumentar o tempo limite de leitura para 300 segundos e o tempo limite de conexão para 90 segundos, você pode usar a seguinte configuração:
location /proxy {
...
proxy_read_timeout 300;
proxy_connect_timeout 90;
...
}
Conclusão
Ajustar o tempo limite de solicitação no NGINX é essencial para garantir que seu aplicativo ou serviço funcione de maneira eficiente e confiável. Ao ajustar as diretivas mencionadas, como client_body_timeout, client_header_timeout, keepalive_timeout, send_timeout, proxy_read_timeout e proxy_connect_timeout, você pode otimizar o desempenho do seu servidor, garantindo que as solicitações sejam processadas adequadamente, mesmo em situações de alta carga ou conexões lentas.
No entanto, é importante lembrar que aumentar excessivamente os valores de tempo limite pode levar a problemas de desempenho, como conexões ociosas e uso desnecessário de recursos do servidor. Portanto, é fundamental encontrar o equilíbrio certo entre o tempo limite de solicitação e o desempenho do servidor, ajustando esses valores de acordo com as necessidades específicas do seu aplicativo ou serviço.
Além disso, é sempre uma boa prática monitorar e analisar o desempenho do servidor regularmente, identificando gargalos e otimizando a configuração conforme necessário. Dessa forma, você pode garantir que seu servidor NGINX ofereça a melhor experiência possível para seus usuários e atenda às demandas crescentes do seu aplicativo ou serviço.