Apache 2.4. LogFormat Request Host

  • Sagt mal, ich stehe mal wieder wie der Ochse am Berg. Apache, die Default vHost, die greift ja bei allem, was sonst nicht abgedeckt ist. Wildcard in DNS ala *.domain.tld sind auch keine Seltenheit. Ruft man also irgend eine Sub auf, die es nicht gibt, dann greift der vHost und sagt eben "gibt es nicht". Soweit alles in Ordnung.

    Nur: Wie bekomme ich das geloggt? Also im access.log, dass da steht, welche Domain angefragt wurde? Per default steht da ja nur der Datei-Pfad und keine Domain.

    https://httpd.apache.org/docs/2.4/mod/mod_log_config.html

    Da gibt es laut Doku den Parameter %v . Hört sich gut an, ist aber Käse hoch drei. Der loggt nur den im vHost angegeben Servernamen. Der Default-Host hat aber keinen, das ist ja der Sinn davon. Als alternative, damit er überhaupt was loggt, schreibt er dann einfach den eigentlichen Maschinennamen rein, also was wie server1.domain.tld Den schreibt er dann bei allen ungültigen Subs rein, also egal was da angefragt wurde. Es steht also überall das gleiche oder überall nix. Damit kommt man also nicht weiter.

    Dann gibt es noch den Parameter %{Host}i , der angeblich den Eintrag aus dem Request-Header loggen soll, denn dort gibt es den Eintrag "Host" ja. Tut er aber nicht, er loggt in dem Fall gar nix.

    So, lange Rede kurzer Sinn. Ich möchte, wenn man a-nicht-da.domain.tld oder b-nicht-da.domain.tld aufruft, der Default-vHost greift, dass der dann auch entsprechend "a-nicht-da.domain.tld" oder eben "b-nicht-da.domain.tld" ins Log schreibt und nicht "server1.domain.tld" oder "nix".

    Bei den normalen, echten vHosts geht das problemlos, dort ist es aber überflüssig, denn die sind ja für eine spezielle Domain angelegt und die Logs haben entsprechende Namen. Dort also, beim vHost "domain1.tld", die das Logfile "domain1.tld" hat, auch noch rein zu schreiben, der Request war für "domain1.tld" ist hier völlig überflüssig. Das muss ins "allgemeine" Log, nur wie?

    Wie geht das mit dem Default-Host, der eben alles "andere" abfängt?

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(