2.6 KiB
| description |
|---|
| Guia passo a passo para otimizar buffers, timeouts e cache no Nginx baseado no tipo de carga de trabalho. |
🚀 Workflow: Performance Tuning (Pathfinder Proxy)
Este workflow guia o ajuste fino do Nginx para extrair a máxima performance, garantindo que o tempo de resposta (request_time) e a carga da CPU sejam minimizados.
1. Base Tecnológica (Obrigatório)
Todo site no Pathfinder deve começar com a fundação de compressão e parâmetros base:
# No bloco 'http' ou 'server'
include snippets/compression.conf; # Gzip + Brotli (Google)
include snippets/proxy_params.conf; # Real-IP + Headers + Buffers Base
2. Aplicação de Presets por Carga de Trabalho
⚡ Preset: APIs e Node.js
O proxy_params.conf já traz timeouts de 60s. Para APIs de tempo real, você deve sobrescrever para timeouts mais agressivos:
location /api/ {
include snippets/proxy_params.conf;
# Sobrescrita para baixa latência
proxy_read_timeout 30s;
proxy_buffering off;
# Suporte a WebSockets (Necessário para Traccar/Socket.io)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
📂 Preset: Downloads e Assets Estáticos
Otimize usando o motor SWR (Stale-While-Revalidate):
location /static/ {
include snippets/cache_optimizer.conf; # Ativa SWR + X-Cache-Status
# Performance de Sistema
sendfile on;
tcp_nopush on;
# Cache no Browser (1 ano para assets com hash)
expires 365d;
add_header Cache-Control "public, no-transform";
}
🎬 Preset: Streaming (Vídeo/Áudio)
Para streaming, precisamos de buffers maiores que o padrão do proxy_params.conf:
location /stream/ {
include snippets/proxy_params.conf;
# Suporte a Range Requests (Seek no vídeo)
proxy_cache_key "$host$request_uri$http_range";
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
# Tuning de Buffer Exclusivo
proxy_buffers 32 16k;
proxy_buffer_size 64k;
proxy_read_timeout 600s;
}
3. Caching Inteligente (Pseudo-CDN)
Use o snippet cache_zones.conf para definir onde o cache reside e o cache_proxy_params.conf para comportamento padrão de cache.
4. Verificação de Performance
Utilize o formato de log detailed_proxy (definido em snippets/log_formats.conf) para depurar gargalos:
# Monitorar tempo de resposta do backend em tempo real
tail -f /var/log/nginx/access_json.log | jq '. | {url: .uri, status: .status, upstream_time: .upstream_response_time, cache: .upstream_cache_status}'