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):
# 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:
# 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
# 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:
<script defer data-fl-website-id="flid_******" src="/js/main.js"></script>sudo nginx -t # validate config
sudo systemctl reload nginxConfirmar que funciona
- Abra o seu site num separador normal do navegador.
- Em DevTools -> Network, filtre por
/api/track. Confirme que os pedidos vão para o seu próprio domínio. - 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/tracke que o valor referencia a variável correta para a sua configuração de edge ($remote_addrpara tráfego direto,$http_cf_connecting_ippara Cloudflare,$http_x_real_ippara 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.