아파치 X-Forwarded-For 로그 설정

아파치 로그 X-Forwarded-For 설정
아파치 X-Forwarded-For 로그 설정

1 문제상황[ | ]

  • 아파치 로그에 로드밸런서[1] IP밖에 찍히지 않는다..
  • 실제 클라이언트 IP 주소를 기록하고 싶다.
root@zetawiki:~# cat /var/log/apache2/access.log | cut -d' ' -f-6
... (생략)
135.79.246.70 - - [28/May/2016:14:58:46 +0900] "GET
135.79.246.70 - - [28/May/2016:14:58:46 +0900] "GET
135.79.246.70 - - [28/May/2016:14:58:46 +0900] "GET
135.79.246.70 - - [28/May/2016:14:58:47 +0900] "GET
135.79.246.70 - - [28/May/2016:14:58:48 +0900] "GET

2 사전작업[ | ]

  • 로드밸런서에 클라이언트 IP를 X-Forwarded-For 헤더 정보로 넘겨주는 설정이 되어 있어야 한다.
예: Varnish X-Forwarded-For 설정

3 아파치 설정[ | ]

  • 아파치 설정 일부를 수정하자.
아래 예시에는 기존의 combined 라인을 주석처리하고 %h%{X-Forwarded-For}i로 변경하였다.
root@zetawiki:~# vi /etc/apache2/apache2.conf
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combine
#LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

4 아파치 재시작[ | ]

root@zetawiki:~# service apache2 restart
 * Restarting web server apache2                                                    [ OK ]

5 확인[ | ]

root@zetawiki:~# cat /var/log/apache2/access.log | tail | cut -d' ' -f-6
211.135.246.14 - - [28/May/2016:15:07:00 +0900] "POST
175.135.135.123 - - [28/May/2016:15:07:01 +0900] "POST
40.79.135.54 - - [28/May/2016:15:07:01 +0900] "GET
118.246.135.3 - - [28/May/2016:15:07:01 +0900] "POST
40.135.135.54 - - [28/May/2016:15:07:03 +0900] "GET
211.246.135.33 - - [28/May/2016:15:07:03 +0900] "GET
121.135.246.29 - - [28/May/2016:15:07:13 +0900] "POST
68.135.135.101 - - [28/May/2016:15:07:17 +0900] "GET
36.79.80.150 - - [28/May/2016:15:11:15 +0900] "POST
66.246.79.143 - - [28/May/2016:15:11:18 +0900] "POST
→ 다양한 클라이언트 IP주소가 기록되고 있다.

6 같이 보기[ | ]

7 참고[ | ]

  1. 여기서는 varnish
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}