TIP게시판

제목 로드밸런서가 적용된 아파치 Access Log 에서의 IP Logging
글쓴이 변종원(웅파) 작성시각 2013/07/02 22:42:49
댓글 : 4 추천 : 1 스크랩 : 0 조회수 : 15473   RSS
KT 유클라우드 서버를 사용중인데 

로드밸런서 하에서 ip가 제대로 잡히지 않네요.

그래서 검색해보니.....




일반적인 아파치 로그 설정
LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""

 

로드밸런서를 거치게 되면 %h 의 리포트 IP가 로드밸런서 IP로 찍히게 됩니다.
 

LogFormat "%v %{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""



여기서 %h 를 %{X-Forwarded-For}i 로 변경해 주셔야 합니다.

HTTP Header 값인 X-Forwarded-For 를 바로 사용하는 것입니다.

 다음글 curl로 로그인 후에 데이터 가져오기 (4)
 이전글 이미지 라이브러리로 워터마크 만들때 픽셀 사라짐

댓글

이현석 / 2013/07/04 06:53:07 / 추천 0
 좋아요! 아마존도 로드밸런서를 거치면 로드밸런서의 ip가 찍히던데 같은 방법으로 하면 왠지 될거 같네요~
변종원(웅파) / 2013/07/04 13:18:44 / 추천 0
이현석/ 맞아요. ^^
한대승(불의회상) / 2013/07/04 14:16:24 / 추천 0
좋은 정보 감사..

참고로 php 에서 $_SERVER['REMOTE_ADDR']도 로드밸런서 ip가 나오니 실 ip가 필요 하실땐 아래처럼 하세요.
$headers["X-Forwarded-For"];

주사마 / 2014/03/28 11:53:35 / 추천 0
 nginx 서버의 access.log를 보니

10.0.2.2 - - [28/Mar/2014:11:58:46 +0900] "GET /sample HTTP/1.1" 200 874 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; InfoPath.3; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)"

위와 같이 보여졌습니다.

해당부분을 클라이언트의 ip 값으로 변경하려면 어떻게 해야될까요?

nginx 의 설정 변경을 통해서 가능할거 같긴한데.... 찾아봐도 잘 모르겟네요?