nugawiki

./categories/server

LB 뒤 클라이언트 IP (X-Forwarded-For)

업데이트 2026-07-21 조회수
X-Forwarded-For: client, proxy1, proxy2

첫 번째 IP = 원 클라이언트.

Apache access log

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common

Tomcat server.xml

<Valve className="org.apache.catalina.valves.RemoteIpValve" />

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       prefix="localhost_access_log" suffix=".txt"
       pattern="%{org.apache.catalina.AccessLog.RemoteAddr}r %l %u %t &quot;%r&quot; %s %b" />

RemoteIpValve 없으면: pattern="%{X-Forwarded-For}i ..."

Servlet

String ip = request.getHeader("X-Forwarded-For");
if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip))
    ip = request.getRemoteAddr();
else
    ip = ip.split(",")[0].trim();

Spring Boot

server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%{X-Forwarded-For}i %l %u %t "%r" %s %b

Spring Security IP 제한

http.authorizeRequests().antMatchers("/**").access("hasIpAddress('10.24.0.0/16')");

./comments