전체 URL을 기록하는 Apache CustomLog


16

CustomLog요청 된 전체 URL (또는 적어도 URL의 호스트 부분)을 기록하기 위해 아파치 구성에 지시문 을 추가하고 싶습니다 . 동일한 아파치 인스턴스에서 여러 도메인을 처리하고 있으며 로그에서 도메인을 구별 할 수 있기를 원합니다 (지금은 "GET /"임). 난에 표시 를 LogFormat에 문서 가 나열 %UURL의 경로 부분을 인쇄 할 수 있지만 호스트를 찾고 있어요.

답변:


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, 또는 HTTP의 값이 될 수 있습니다 Host당신이 한 여부에 따라 헤더 UseCanonicalName구성에서 활성화 (그리고 여부를 클라이언트가 제공 Host헤더).


%{Host}i도 HTTP / 1.0 일? %V언뜻보기에 감사합니다!
jrdioko 2016 년

% {Host} i (또는 % {...} i 구문)는 해당 헤더가 실제로 요청에 존재하는 경우에만 결과를 생성한다고 생각합니다. 따라서 HTTP / 1.0의 경우 유용하지 않을 것으로 예상됩니다.
larsks

한 번 더 설명 하면, 비활성화 된 경우와 %V동일 합니까? %{Host}iUseCanonicalName
jrdioko 2016 년

1
문서에 따르면, "UseCanonicalName을 끄면 Apache는 클라이언트가 제공 한 호스트 이름과 포트를 사용하여 자체 참조 URL을 형성합니다 (그렇지 않으면 위에서 정의한 표준 이름을 사용합니다). 그래서 %V사용 ServerName에는 존재하지 않는 경우 Host헤더입니다.
larsks

2

'% v'는 ServerName이 원하는 것일 수 있습니까?


%v내 상황에서 URL에 나타나는 도메인에 관계없이 ServerName 값이 항상 동일한 문자열을 반환하는 것처럼 보입니다 . 그러나 %V그것이 옳은 것처럼 보입니다.
jrdioko

그것은 가상 호스트 이름과 관련이 있습니다
Robert

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내 상황에서 URL에 나타나는 도메인에 관계없이 ServerName 값이 항상 동일한 문자열을 반환하는 것처럼 보입니다 . 그러나 %V그것이 옳은 것처럼 보입니다.
jrdioko 2016 년

2

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

%{Host}i%U%q전체 URL을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.