79 lines
2.6 KiB
Markdown
79 lines
2.6 KiB
Markdown
---
|
|
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}'
|
|
```
|