menu
Logo zum aktuellen Thema
Informatik > linux > Separate Logdateien für Unterseiten mit mod_setenvif

Separate Logdateien für Unterseiten mit mod_setenvif

Wer eine Bloockfarm ohne individuellen Subdomains betreibt, möchte sicherlich gerne für jeden eigenen Blog Access-Dateien erzeugen. Das Gleiche gilt natürlich für Wikis oder sonstige Unterseiten. Mit dem Apache Modul mod_setenvif können anhand von Pfaden Variablen erzeugt werden, die für die Erzeugung von Logdateien verwendet werden. Somit ist es mölgich getrennte Statistiken zu erzeugen.

separatelogs

Es muss zunächst das Modul mod_setenvif installiert bzw. aktiviert werden. Dann folgen Änderungem im VirtualHost-Abschnitt.

Mit dem Ausdruck SetEnvIf Request_URI "^/w4fblog.*" W4F wird eine Variable W4F erzeugt, sobald eine URL aufgerufen wird, die mit https://blogs.domain.de/w4fblog anfängt. Damit nun die entsprechende Access.log angelegt wird, muss hitner der CustomLog-Anweisung noch ein env=W4F. Das sorgt dafür, dass die Logdatei wirklich nur dann erzeugt, bzw. einen neuen Eintrag erhält, wenn eine entsprechende Seite aufgerufen wird. Alle anderen Seiten der Domain landen in ihren jeweils eigenden Logdateien oder der allgemeinen. Wie im Beispielcode zu sehen, kann man eine allgmeine Access.log trotzdem anlegen und befüllen.

<VirtualHost 134.100.28.172:443> ServerAdmin webmaster@domain.de ServerName blogs.domain.de
DocumentRoot /opt/sites/blogs/htdocs DirectoryIndex index.php
ErrorLog /opt/sites/sites/blogs/logs/error.log CustomLog "|/usr/sbin/rotatelogs /opt/sites/blogs/logs/%Y-%m-%d-access.log 86400" combined
SetEnvIf Request_URI "^/w4fblog.*" W4F CustomLog "|/usr/sbin/rotatelogs /opt/sites/blogs/logs/w4fblog/%Y-%m-%d-w4fblog_access.log 86400" combined env=W4F
...
</VirtualHost>

Das Modul mod_setenvif kann natürlich auch für andere Zwecke eingesetzt werden. Es lassen sich auch Browserweichen oder ähnliches damit erzeugen. Die Variable, die erzeugt wird, steht zum Beispiel CGI-Skripten zur Verfügung. So ist es in PHP mittels u.a. mit der Funktion apache_getenv("VARIABLENAME"); möglich, auf die Variable zuzugreifen. Im aktuellen Fall müsste es also heißen:

$env = apache_getenv("W4F");

echo $env;

Der Inhalt der Variable ist übrigens ein String mit "1".

Bei Interesse kann ich auch noch das Modul mod_env empfehlen. Hiermit können manuell Variablen gesetzt und gelöscht werden. Informationen gibt es hier: https://httpd.apache.org/docs/2.4/mod/mod_env.html

Quellen

  • letzte Änderung: 2017-03-29 18:27:02
  • Autor: Torsten Witt
Facebook