Apache CustomLog для реєстрації повної URL-адреси


16

Я хотів би додати CustomLogдирективу до моєї конфігурації apache, щоб ввести повну запитувану URL-адресу (або принаймні хост-частину URL-адреси). У мене є кілька доменів, якими обробляється один і той же екземпляр apache, і я хотів би мати можливість розрізнити домени в журналах (як зараз я бачу лише "GET /"). Я бачу, що в документації на LogFormat він перераховує, %Uщоб надрукувати частину шляху URL-адреси, але я шукаю хоста.

Відповіді:


20

Продовжуйте читати LogFormatдокументацію, і ви знайдете:

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

Що означає, що ви можете включити у свою конфігурацію:

%{Host}i

В %vі %Vдирективи можуть також отримати , що ви хочете.

% v завжди буде значенням ServerName("канонічне ім'я" вашого віртуального хоста). %V може бути значенням ServerName, або це може бути значення Hostзаголовка HTTP , залежно від того, UseCanonicalNameвключено чи ні у вашій конфігурації (та чи надає клієнт Hostзаголовок чи ні ).


Буде %{Host}iпрацювати навіть для HTTP / 1.0? %Vна перший погляд виглядає правильно, дякую!
jrdioko

Я вважаю, що% {Host} i (або будь-який% {...} я будую) дасть результат лише в тому випадку, якщо цей заголовок дійсно існує в запиті. Тож для HTTP / 1.0 я не очікував би корисності.
larsks

Ще одне уточнення: тож %Vбуде ідентичним, %{Host}iякщо UseCanonicalNameвимкнено?
jrdioko

1
Згідно з документацією, "With UseCanonicalName off Apache формуватиме самореференційні URL-адреси, використовуючи ім'я хоста та порт, наданий клієнтом, якщо такі надаються (інакше він буде використовувати канонічне ім'я, як визначено вище)." Так %Vбуде використовувати, ServerNameякщо немає Hostзаголовка.
larsks

2

'% v' - це те, що ви хочете?


Схоже, %vзавжди повертається однаковий рядок у моїй ситуації: значення ServerName незалежно від того, який домен відображається в URL-адресі. Але %Vсхоже, це робить правильно.
jrdioko

Це пов’язано з ім'ям віртуального
Роберт

2

Додати %vу свій формат журналу.

Щось на зразок цього:

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

1
Схоже, %vзавжди повертається однаковий рядок у моїй ситуації: значення ServerName незалежно від того, який домен відображається в URL-адресі. Але %Vсхоже, це робить правильно.
jrdioko

2

LogFormat "% h% l% u% t \"% r \ "%> s% b \"% {Referer} i \ "\"% {User-Agent} i \ "% {Host} i% U% q "комбіновані

%{Host}i%U%qдає повну URL-адресу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.