Apache CustomLog per registrare l'URL completo


16

Vorrei aggiungere una CustomLogdirettiva alla mia configurazione di Apache per registrare l'URL completo richiesto (o almeno la parte host dell'URL). Ho diversi domini gestiti dalla stessa istanza di apache e vorrei essere in grado di distinguere i domini nei registri (poiché ora tutto ciò che vedo è "GET /"). Vedo nella documentazione su LogFormat che elenca %Uper stampare la parte del percorso dell'URL, ma sto cercando l'host.

Risposte:


20

Continua a leggere la LogFormatdocumentazione e troverai:

%...{Foobar}i:  The contents of Foobar: header line(s) in the request
                sent to the server.

Ciò significa che potresti includere nella tua configurazione:

%{Host}i

Le direttive %ve %Vpossono anche darti quello che vuoi.

% v sarà sempre il valore di ServerName(il "nome canonico" del tuo host virtuale). %V può essere il valore ServerNameo può essere il valore dell'intestazione HTTP Host, a seconda che sia stato UseCanonicalNameabilitato o meno nella configurazione (e se il client abbia fornito o meno Hostun'intestazione).


Funzionerà %{Host}ianche per HTTP / 1.0? %Vsembra a prima vista, grazie!
jrdioko,

Ritengo che% {Host} i (o qualsiasi% {...} i costrutto) produrrà un risultato solo se quell'intestazione esiste effettivamente nella richiesta. Quindi per HTTP / 1.0 non mi aspetto che sia utile.
Larks

Un altro chiarimento: quindi %Vsarà identico a %{Host}ise UseCanonicalNameè disabilitato?
jrdioko,

1
Secondo la documentazione, "Se UseCanonicalName è disattivato, Apache formerà URL autoreferenziali utilizzando il nome host e la porta fornita dal client, se presente, (altrimenti utilizzerà il nome canonico, come definito sopra)." Quindi %Vuserà ServerNamese non c'è Hostintestazione.
Larks

2

'% v' è il ServerName potrebbe essere quello che vuoi?


Sembra che %vrestituisca sempre la stessa stringa nella mia situazione: il valore ServerName indipendentemente dal dominio visualizzato nell'URL. Ma %Vsembra che faccia la cosa giusta.
jrdioko,

Ciò è correlato al nome dell'host virtuale
Robert,

2

Aggiungi %val tuo formato di registro.

Qualcosa come questo:

LogFormat "%v - %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-vhost
CustomLog /log/file/location combined-vhost

1
Sembra che %vrestituisca sempre la stessa stringa nella mia situazione: il valore ServerName indipendentemente dal dominio visualizzato nell'URL. Ma %Vsembra che faccia la cosa giusta.
jrdioko,

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-Agent} i \ "% {Host} i% U% q " combinato

%{Host}i%U%qdà url completo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.