[Apache] SetEnvIf를 이용하여 Access Log 기록 여부 변경 하기

Apache에서는 SetEnvIf를 이용하여 로그 여부를 정의할 수 있습니다.

특정 설정을 환경변수로 저장 후에 그것을 이용하여 로그 여부를 정의하는 식으로 하시면 됩니다.
[code]SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] …[/code]

첫번째 인자인 attribute에는 다음의 값이 들어갈 수 있습니다.

1. HTTP HEADER


  • Host

  • User-Agent

  • Referer

  • Accept-Language
2. COMMON


  • Remote_Host – 요청하는 클라이언트의 호스트명

  • Remote_Addr – 요청하는 클라이언트의 IP 주소

  • Server_Addr – 요청을 받는 서버의 IP 주소

  • Request_Method – 사용한 Method 명 (GET, POST 등)

  • Request_Protocol – 요청의 프로토콜 이름과 버젼 (“HTTP/1.1” 등)

  • Request_URI – 요청의 Query String을 제외한 호스트명 이후의 주소
3. 기존의 환경 변수

특정 IP의 접속을 로그로 남기지 않을 경우에는 다음과 같은 설정을 하여 로그를 남기지 않도록 할 수 있습니다.
[code]SetEnvIf Remote_Addr “123.123.123.123” dont_log[/code]
적용할 가상 호스트의 로그 부분에 다음과 같이 추가합니다.
[code]CustomLog logs/access_log common env=!dont_log[/code]
access_log를 기록할때 dont_log 환경변수가 없을경우에만 기록을 하라는 것으로 생각하면 됩니다.