문서의 이전 판입니다!
Proxy 사용시 Client Real IP 기록 설정
앞단에 Proxy / WEB서버 또는 방화벽이나 L4를 통해서 서비스를 하게 될 경우 로그에 찍히는 Client IP나 request.getRemoteAddr() 에서 실제 사용자의 IP주소가 아니라 앞단의 중계서버 IP가 찍히게 되는 경우가 있다.
이런경우 아래와같이 server.xml에 RemoteIpValve를 선언하여 처리해주도록 한다.
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<!-- [추가] 프록시 IP를 처리할 RemoteIpValve -->
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="192\.168\.0\.5"
remoteIpHeader="x-forwarded-for"
proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />
<!-- [기존 유지] AccessLogValve (패턴의 %h 또는 %a가 실제 IP로 자동 교체됨) -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
internalProxies 에 앞단의 프록시 서버 아이피를 등록해주면 해당 아이피에서 요청하는 건에 대해서는 x-forwarded-for 값을 실제 IP값으로 치환해준다.