Apache CustomLog, aby zapisać pełny adres URL


16

Chciałbym dodać CustomLogdyrektywę do mojej konfiguracji apache, aby rejestrować pełny żądany adres URL (lub przynajmniej część hosta adresu URL). Mam kilka domen obsługiwanych przez tę samą instancję Apache i chciałbym móc odróżnić domeny w logach (jak teraz widzę tylko „GET /”). Widzę w dokumentacji LogFormat, że zawiera listę %Uczęści ścieżki URL, ale szukam hosta.

Odpowiedzi:


20

Czytaj dalej LogFormatdokumentację, a znajdziesz:

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

Co oznacza, że ​​możesz uwzględnić w swojej konfiguracji:

%{Host}i

%vi%V dyrektywy mogą również uzyskać to, co chcesz.

% v będzie zawsze wartością ServerName(„nazwa kanoniczna” twojego wirtualnego hosta). %V może być wartością ServerNamelub może być wartością Hostnagłówka HTTP , w zależności od tego, czy masz UseCanonicalNamewłączoną konfigurację (i czy klient dostarczył Hostnagłówek).


Czy będzie %{Host}idziałać nawet dla HTTP / 1.0? %Vwygląda na pierwszy rzut oka, dzięki!
jrdioko

Uważam, że% {Host} i (lub dowolny konstrukt% {...} i) wygeneruje wynik tylko wtedy, gdy nagłówek rzeczywiście istnieje w żądaniu. W przypadku HTTP / 1.0 nie spodziewałbym się, że będzie to przydatne.
larsks

Jeszcze jedno wyjaśnienie: %Vczy będzie identyczne jak w %{Host}iprzypadku UseCanonicalNamewyłączenia?
jrdioko

1
Zgodnie z dokumentacją: „Przy wyłączonej funkcji UseCanonicalName Apache utworzy adresy URL z referencyjnymi adresami, używając nazwy hosta i portu dostarczonego przez klienta, jeśli są podane (w przeciwnym razie użyje nazwy kanonicznej, jak zdefiniowano powyżej)”. Więc %Vużyje, ServerNamejeśli nie ma Hostnagłówka.
larsks

2

„% v” to nazwa serwera może być tym, czego chcesz?


Wygląda na to, że %vzawsze zwraca ten sam ciąg w mojej sytuacji: wartość NazwaSerwera niezależnie od domeny wyświetlanej w adresie URL. Ale %Vwygląda na to, że robi to dobrze.
jrdioko

Jest to związane z nazwą wirtualnego hosta
Robert

2

Dodaj %vdo formatu dziennika.

Coś takiego:

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

1
Wygląda na to, że %vzawsze zwraca ten sam ciąg w mojej sytuacji: wartość NazwaSerwera niezależnie od domeny wyświetlanej w adresie URL. Ale %Vwygląda na to, że robi to dobrze.
jrdioko

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-Agent} i \ "% {Host} i% U% q „połączone

%{Host}i%U%qpodaje pełny adres URL.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.