エキサイトのしばたにえんです。 remote_addrとX-Forwarded-Forの違いについてよくわからなかったので調べました。
remote_addr
アクセス元のIP。直前のIPを持ちます。
Client ↓ LoadBalancer(remote_addr は Client) ↓ ApplicationServer(remote_addr は LoadBalancer)
Javaでremote_addrを取得する
@RequestMapping public class IpController { @GetMapping("ip") public String getIp(HttpServletRequest httpServletRequest) { return httpServletRequest.getRemoteAddr(); }
X-Forwarded-For
ロードバランサーやプロキシを経由する度にアクセス元の情報が追加されていきます。,
付きで追加されるので注意
Client(X-Forwarded-For は "") ↓ LoadBalancer(X-Forwarded-For は "Client") ↓ ApplicationServer(X-Forwarded-For は "Client, LoadBalancer")
JavaでX-Forwarded-Forを取得する
@RequestMapping public class IpController { @GetMapping("ip") public String getIp(HttpServletRequest httpServletRequest) { return httpServletRequest.getHeader("X-Forwarded-For"); }