본문 바로가기
WEB/APACHE

24. X-Forwarded-For(XFF) 설정

by coldplayer83 2026. 1. 15.
728x90
반응형

http://www.chlux.co.kr/bbs/board.php?bo_table=board02&wr_id=104

 

클럭스

클럭스, S/W 프로젝트

www.chlux.co.kr

 

XFF : HTTP Header 중 하나로 HTTP Server 에 요청한 clinet 의 IP 를 식별하기 위한 사실상의 표준

웹 서버나 WAS 앞에 L4 같은 Load balancers 나 Proxy server(HAProxy), caching server(Varnish), HTTP 서버용 WAS Connector(웹로직 커넥터 - mod_wl, 톰캣 커넥터 - mod_jk 등) 등이 있을 경우, 이런 제품들은 웹서버/WAS 에 HTTP 나 전용 프로토콜(AJP)로 요청을 보낸후에 받은 결과를 가공하여 클라이언트에 재전송하게 됨
이로 인해 처리한 웹 서버나 WAS에서 request.getRemoteAddr(); 등으로 클라이언트 IP를 얻을 경우 L4 나 Proxy 의 IP 를 얻게 되는데 이는 원하는 결과가 아님


X-Forwarded-For는 이 문제를 해결하기 위해 사용하게 되며, 다음과 같이 콤마를 구분자로 client 와 proxy IP 가 들어가게 되므로 첫번째 IP 를 가져오면 클라이언트를 식별할 수 있음

X-Forwarded-For: client, proxy1, proxy2

 



설정 방법

httpd.conf에 아래와 같이 설정

# 클라이언트 ip로 지정
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
# 외부에서 들어온 프로토콜이 https
RequestHeader set X-Forwarded-Proto "https"
# 클라이언트가 요청한 원래 Host 유지
RequestHeader set X-Forwarded-Host "%{Host}s"

 

https://httpd.apache.org/docs/current/ko/mod/mod_headers.html#requestheader

 

mod_headers - Apache HTTP Server Version 2.4

아파치 모듈 mod_headers 이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요. 요약 이 모듈은 HTTP 요청 헤더와 응답 헤더를 조절하고 수정하는 지시어들을 제공한다.

httpd.apache.org

https://velog.io/@haron/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC-%EC%8B%9D%EB%B3%84%ED%95%98%EB%8A%94%EB%8D%B0-%ED%95%84%EC%9A%94%ED%95%9C-%ED%97%A4%EB%8D%94%EA%B0%92%EC%9D%84-%EC%82%B4%ED%8E%B4%EB%B3%B4%EC%9E%90-2lxoc32r

 

[네트워크] 사용자를 식별하는데 필요한 헤더값을 살펴보자

사용자가 사용한 기기, IP, 프로토콜 등등 사용자를 식별하는데 필요한 값들이 있다.위 값들은 헤더값을 통해 얻을 수 있다.웹 브라우저나 다른 HTTP 클라이언트가 웹 서버에게 자신의 식별 정보

velog.io

 

 

set : 요청 헤더를 설정. 같은 이름으로 이미 헤더가 있다면 대체

X-Forwarded-For(XFF) : HTTP 프록시나 로드 밸런서를 통해 웹 서버에 접속하는 클라이언트의 원 IP 주소를 식별하는 HTTP 요청 헤더

X-Forwarded-Proto(XFP) : 클라이언트가 프록시 또는 로드 밸런서에 접속하는데에 사용했던 프로토콜(HTTP 또는 HTTPS)이 무엇인지 확인하는 HTTP 요청 헤더

X-Forwarded-Host(XFH) : 클라이언트가 요청한 원래 Host 헤더를 식별하는 HTTP 요청 헤더

 


 

로그에 client ip(XFF 설정)를 남기고 싶다면 아래와 같이 설정

%h -> %{X-Forwarded-For}i 로 변경

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

 

%h : 원격 호스트

%{X-Forwarded-For}i : 요청에 포함된 XFF 헤더 값을 그대로 출력. 없으면 -로 찍힘

728x90
반응형