Soporte/Guías de proxy
Guías de proxy

Proxy de Flowsery Analytics con Caddy

Enruta Flowsery Analytics a través de Caddy para evitar la interferencia de los adblockers y capturar datos de visitantes más precisos. La configuración sencilla de Caddy hace que este montaje sea especialmente fácil.

1. Configuración principal de Caddy

Agrega las siguientes directivas a tu Caddyfile:

Text
your_domain.com {
    # Proxy the analytics script
    handle /js/main.js {
        reverse_proxy https://analytics.flowsery.com {
            header_up Host {upstream_hostport}
            header_up X-Real-IP {remote_host}
            header_up X-Forwarded-For {remote_host}
            header_up X-Forwarded-Proto {scheme}
        }
 
        # Cache the script for 1 year
        header Cache-Control "public, max-age=31536000"
        header Expires "1y"
    }
 
    # Proxy the event collection endpoint + forward real visitor IP
    handle /api/track {
        reverse_proxy https://analytics.flowsery.com {
            header_up Host {upstream_hostport}
 
            # CRITICAL: Flowsery reads this header as the real visitor IP.
            # Without it, every visitor resolves to your server's region.
            # Replace {remote_host} with {http.request.header.Cf-Connecting-Ip}
            # if Caddy sits behind Cloudflare.
            header_up x-flowsery-real-ip {remote_host}
 
            header_up X-Real-IP {remote_host}
            header_up X-Forwarded-For {remote_host}
            header_up X-Forwarded-Proto {scheme}
        }
    }
 
    # Your other site directives...
}

Nota: Si tu servidor ya usa la ruta /api/track, agrega data-api a la etiqueta del script de Flowsery Analytics para dirigir los eventos a otra ruta. Por ejemplo, data-api="/flowsery-events" enviará los datos a /flowsery-events.

Importante: Si todos los visitantes aparecen en la misma ubicación en tu panel, confirma que x-flowsery-real-ip se esté estableciendo con la IP real del visitante, no con la del servidor proxy, al reenviar solicitudes al endpoint /events de Flowsery Analytics.

2. Opcional: habilitar caché

Para obtener mejor rendimiento, puedes agregar una capa de caché:

Text
your_domain.com {
    # Cache settings
    cache {
        path /var/cache/caddy
        ttl 1y
        capacity 10GB
    }
 
    handle /js/main.js {
        cache
        reverse_proxy https://analytics.flowsery.com {
            header_up Host {upstream_hostport}
            header_up X-Real-IP {remote_host}
            header_up X-Forwarded-For {remote_host}
            header_up X-Forwarded-Proto {scheme}
        }
 
        header Cache-Control "public, max-age=31536000"
        header Expires "1y"
    }
 
    # ... remainder of the configuration
}

3. Modifica la etiqueta del script

Reemplaza el snippet original de Flowsery Analytics por la versión con proxy:

HTML
<script defer data-fl-website-id="flid_******" src="/js/main.js"></script>
Terminal
# Validate the configuration
caddy validate
 
# If validation passes, reload Caddy
caddy reload

Confirmar que funciona

Para validar que el proxy funciona correctamente:

  1. Navega a tu sitio web.
  2. Abre las herramientas de desarrollo del navegador y ve a la pestaña Network.
  3. Verifica que las solicitudes de analítica se sirvan desde tu dominio y no desde analytics.flowsery.com.

Caddy gestiona automáticamente los certificados HTTPS y HTTP/2, lo que lo convierte en una opción sólida para proxificar analítica. Asegúrate de que tu servidor Caddy tenga suficiente espacio en disco si habilitas la caché.

Solución de problemas

Todos los visitantes aparecen desde la misma ubicación

Cuando todos los visitantes muestran una única ubicación geográfica, normalmente la región de tu servidor, el proxy no está reenviando correctamente las IP reales.

Resolución:

  1. Asegúrate de que tu proxy establezca x-flowsery-real-ip con la IP real del visitante, no con la IP del servidor, al reenviar solicitudes al endpoint /events de Flowsery Analytics.
  2. Si Caddy está detrás de Cloudflare u otro edge, {remote_host} será la IP de ese proxy ascendente, no la del visitante. Usa {http.request.header.Cf-Connecting-Ip} para Cloudflare o {http.request.header.X-Real-Ip} para un caso genérico.