• Home
  • About
    • lahuman photo

      lahuman

      열심히 사는 아저씨

    • Learn More
    • Facebook
    • LinkedIn
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

AWS NLB 는 X-Forwarded-For 헤더와 같은 7 계층 관련 기능을 사용할 수 없습니다.

17 Sep 2022

Reading time ~1 minute

AWS NLB는 기본적으로 X-Forwarded-For 헤더와 같은 7 계층 관련 기능을 사용할 수 없습니다.

ALB를 사용했을때, X-Forwarded-For를 이용해서 사용자의 IP를 확인 할 수 있었지만 NLB로 변경 이후 잘못된 IP를 가져오고 있었습니다. 원인으로 NLB는 4계층 장비로 X-Forwarded-For 헤더와 같은 7 계층 관련 기능을 사용할 수 없습니다.

하지만, target group의 속성에서 Preserve client IP addresses 값을 ON으로 하면 확인이 가능합니다.

현재 구조

sequenceDiagram; autonumber; NLB->>+NGINX: 전달; Note over NLB, NGINX: NLB(4계층 장비) X-Forwarded-For 불가; NGINX->>+ALB: X-Forwarded-For 전달; ALB ->>+API: Client IP 다름; API-->>-ALB: 응답; ALB-->>-NGINX: 응답; NGINX-->>-NLB: 응답;

변경 구조

sequenceDiagram; autonumber; NLB->>+NGINX: 전달; Note over NLB, NGINX: Target Group 옵션 변경; NGINX->>+ALB: X-Forwarded-For 전달; ALB ->>+API: Client IP 확인가능; API-->>-ALB: 응답; ALB-->>-NGINX: 응답; NGINX-->>-NLB: 응답;

NLB를 통한 요청은 X-Forwarded-For에 실제 IP가 아닌, 172.10.X.X 를 넣어서 보내줍니다.

성능 이슈로 ALB에서 NLB로 변경하였지만, 사용자의 IP 확인이 불가능하다면 ALB로 원복해야합니다.

참고자료

  • HTTP 헤더 및 Application Load Balancer
  • AWS Network Load Balancer unable to get client IP
  • Target groups for your Network Load Balancers#client-ip-preservation


awsnlbheader Share Tweet +1