Apache에서는 SetEnvIf를 이용하여 로그 여부를 정의할 수 있습니다.
특정 설정을 환경변수로 저장 후에 그것을 이용하여 로그 여부를 정의하는 식으로 하시면 됩니다.
[code]SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] …[/code]
첫번째 인자인 attribute에는 다음의 값이 들어갈 수 있습니다.
1. HTTP HEADER
- Host
- User-Agent
- Referer
- Accept-Language
- Remote_Host – 요청하는 클라이언트의 호스트명
- Remote_Addr – 요청하는 클라이언트의 IP 주소
- Server_Addr – 요청을 받는 서버의 IP 주소
- Request_Method – 사용한 Method 명 (GET, POST 등)
- Request_Protocol – 요청의 프로토콜 이름과 버젼 (“HTTP/1.1” 등)
- Request_URI – 요청의 Query String을 제외한 호스트명 이후의 주소
특정 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 환경변수가 없을경우에만 기록을 하라는 것으로 생각하면 됩니다.