--- 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: ```nginx # 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: ```nginx 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): ```nginx 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`: ```nginx 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: ```bash # 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}' ```