Flowsery Analytics mit Nginx proxyen
Leiten Sie Flowsery Analytics über Nginx weiter, um Störungen durch Adblocker zu vermeiden und genaue Besucherdaten zu erfassen. Diese Anleitung gilt sowohl für eigenständiges Nginx als auch für Nginx als Reverse Proxy vor einem Application Server.
Die Einrichtung hat zwei wesentliche Bestandteile: ein proxy_pass, das Events wie First-Party-Traffic erscheinen lässt (adblocker-sicher), und ein proxy_set_header x-flowsery-real-ip, das die echte Besucher-IP durch den Proxy-Hop transportiert, damit Flowsery die Geodaten anhand des Besuchers statt anhand Ihres Servers auflösen kann.
1. Nginx-Basiskonfiguration
Fügen Sie diese location-Blöcke hinzu (typischerweise in /etc/nginx/sites-available/your-site oder /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;
}Wenn Nginx hinter Cloudflare (oder einer anderen Edge) läuft, ist $remote_addr die IP des CDN-Edges und nicht die des Besuchers. Verwenden Sie in diesem Fall stattdessen den Real-IP-Header des 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;Hinweis: Wenn Ihr Server bereits /api/track verwendet, wählen Sie einen anderen Pfad und geben Sie ihn dem Tracker über data-api="/flowsery-events" mit.
2. Optional: Caching für das Skript aktivieren
# 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. Skript-Tag anpassen
Ersetzen Sie das Flowsery-Analytics-Snippet durch die geproxyte Variante:
<script defer data-fl-website-id="flid_******" src="/js/main.js"></script>sudo nginx -t # validate config
sudo systemctl reload nginxPrüfen, ob es funktioniert
- Öffnen Sie Ihre Website in einem normalen Browser-Tab.
- Öffnen Sie DevTools → Network und filtern Sie nach
/api/track. Bestätigen Sie, dass die Requests an Ihre eigene Domain gehen. - Prüfen Sie im Flowsery-Dashboard, ob die Besucher-Länder Ihrer Zielgruppe entsprechen und nicht Ihrer Hosting-Region.
Fehlerbehebung
Jeder Besucher scheint aus demselben Ort zu kommen
Der Proxy leitet Events weiter, aber nicht die echte Besucher-IP. x-flowsery-real-ip fehlt entweder oder enthält die IP Ihres Servers statt der IP des Besuchers.
- Prüfen Sie, ob die Zeile
proxy_set_header x-flowsery-real-ip <value>für/api/trackvorhanden ist und der Wert auf die richtige Variable für Ihr Edge-Setup verweist ($remote_addrfür direkten Traffic,$http_cf_connecting_ipfür Cloudflare,$http_x_real_ipfür eine generische L7-Edge). - Wenn Nginx hinter einem anderen Proxy sitzt, verwenden Sie nicht
$remote_addr- das ist dann der Upstream-Proxy und nicht der Besucher. Verwenden Sie stattdessen den Header, den der Upstream-Proxy setzt.