Suporte/Guias de proxy
Guias de proxy

Proxy do Flowsery Analytics com Nginx

Encaminhe o Flowsery Analytics através do Nginx para evitar interferência de bloqueadores de anúncios e capturar dados de visitantes mais precisos. Este guia aplica-se tanto a configurações Nginx independentes como ao Nginx como reverse proxy à frente de um servidor de aplicação.

Esta configuração tem dois elementos essenciais: um proxy_pass que torna os eventos first-party (e seguros contra ad-blockers) e um proxy_set_header x-flowsery-real-ip que transporta o IP real do visitante através do salto de proxy para que a Flowsery resolva a geolocalização a partir do visitante, e não do seu servidor.

1. Configuração principal do Nginx

Adicione estes blocos location (normalmente em /etc/nginx/sites-available/your-site ou /etc/nginx/conf.d/your-site.conf):

Nginx
# Proxy the analytics script
location /js/main.js {
    proxy_pass https://cdn.flowsery.com/main.js;
    proxy_set_header Host cdn.flowsery.com;
 
    # Cache the script for 1 year
    proxy_cache_valid 200 1y;
    add_header Cache-Control "public, max-age=31536000";
    expires 1y;
}
 
# Proxy the event collection endpoint + forward real visitor IP
location /api/track {
    proxy_pass https://analytics.flowsery.com/analytics/events;
    proxy_set_header Host analytics.flowsery.com;
 
    # CRITICAL: forwards the real visitor IP to the analytics backend.
    # Without this, every visitor resolves to your server's location.
    proxy_set_header x-flowsery-real-ip $remote_addr;
 
    # Standard forwarding (kept for compatibility with other consumers)
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
 
    # Allow POST requests
    proxy_pass_request_body on;
}

Se executar o Nginx atrás da Cloudflare (ou de outra edge), $remote_addr é o IP da edge da CDN, não o do visitante. Use antes o cabeçalho de IP real da CDN:

Nginx
# Behind Cloudflare — the visitor IP is in $http_cf_connecting_ip
proxy_set_header x-flowsery-real-ip $http_cf_connecting_ip;
 
# Behind Vercel / Fly.io / a generic L7 proxy
# proxy_set_header x-flowsery-real-ip $http_x_real_ip;

Nota: Se o seu servidor já servir /api/track, escolha outro caminho e indique-o ao tracker com data-api="/flowsery-events".

2. Opcional: ativar cache para o script

Nginx
# At the top of your nginx.conf (http {} block)
proxy_cache_path /var/cache/nginx/flowsery_cache levels=1:2 keys_zone=flowsery_cache:10m max_size=10g inactive=60m use_temp_path=off;
 
# In your server {} block, augment the /js/main.js location
location /js/main.js {
    proxy_cache flowsery_cache;
    proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;
    proxy_cache_valid 200 1y;
    proxy_cache_bypass $http_pragma;
    proxy_cache_revalidate on;
    # ...rest of the config from step 1
}

3. Modificar a tag de script

Substitua o snippet do Flowsery Analytics pela versão com proxy:

HTML
<script defer data-fl-website-id="flid_******" src="/js/main.js"></script>
Terminal
sudo nginx -t           # validate config
sudo systemctl reload nginx

Confirmar que funciona

  1. Abra o seu site num separador normal do navegador.
  2. Em DevTools -> Network, filtre por /api/track. Confirme que os pedidos vão para o seu próprio domínio.
  3. No seu painel da Flowsery, confirme que os países dos visitantes refletem a sua audiência, e não a região do seu alojamento.

Resolução de problemas

Todos os visitantes aparecem da mesma localização

O proxy está a encaminhar eventos, mas não o IP real do visitante. O x-flowsery-real-ip está em falta ou contém o IP do seu servidor em vez do IP do visitante.

  • Confirme que a linha proxy_set_header x-flowsery-real-ip <value> existe em /api/track e que o valor referencia a variável correta para a sua configuração de edge ($remote_addr para tráfego direto, $http_cf_connecting_ip para Cloudflare, $http_x_real_ip para uma edge L7 genérica).
  • Se o Nginx estiver atrás de outro proxy, não use $remote_addr: esse é o upstream proxy, não o visitante. Use o cabeçalho que o proxy a montante injeta.