Piwik hinter Varnish installieren und konfigurieren

Piwik ist ein freies Statistiktool, ähnlich zu Google Analytics was gerne auf Websites eingesetzt wird, um Zugriffe auf eine Website zu erfassen. Wenn Piwik hinter einem Reverse Proxy wie Varnish installiert werden soll, sind jedoch einige Dinge bei der Konfiguration zu beachten, damit die Software die Zugriffe auch korrekt erfassen kann.

Varnish Konfiguration

Die Funktionsweise von Varnish ist, Zugriffe zwischenzuspeichern, um diese beim nächsten Abruf schneller ausliefern zu können. Was bei meist statischen Websites super funktioniert, eignet sich bei einer Statistiksoftware natürlich nur bedingt. Deswegen muss Varnish so konfiguriert werden, dass es die Zugriffe auf Varnish nicht cached, sondern direkt zu dem Webserver weiterleitet.

In der Varnish Konfigurationsdatei (meist default.vcl) im Bereich vcl_recv folgendes hinzufügen:

  if (req.http.host == "piwik.domain.com") {
    set req.http.X-Forwarded-For = client.ip;
    return(pass);
  }

Dadurch wird die IP des Zugriffes an den Webserver weitergereicht. Ansonsten würde Piwik denken, alle Zugriffe kommen immer von 127.0.0.1 und wären immer der selbe Besucher. :)
Zudem wird Varnish gesagt, alle Anfragen immer weiterzureichen.

Im Bereich vcl_fetch der Varnish Konfigurationsdatei muss noch folgendes hinzugefügt werden:

  if (req.http.host == "piwik.domain.com") {
    return(hit_for_pass);
  }

Damit speichern Varnish die Rückgabe vom Webserver nicht in seinem Cache.

Die Domain in der Konfiguration (in meinem Fall piwik.domain.com) muss natürlich entsprechend angepasst werden.

Nach einem Neustart von Varnish ist dieser fertig für den Einsatz von Piwik konfiguriert.

Piwik

Neben Varnish muss auch die Konfiguration von Piwik etwas angepasst werden, damit die IP des Zugriffs korrekt aufgezeichnet werden kann.

In dem Bereich [General] in der Konfigurationsdatei unter config/config.ini müssen folgende Zeilen hinzugefügt werden:

[General]
proxy_client_headers[] = "HTTP_X_FORWARDED_FOR"
proxy_host_headers[] = "HTTP_X_FORWARDED_FOR"

Jetzt sind Varnish und Piwik fertig konfiguriert.