안녕하세요.
베스핀글로벌 클라우드기술지원팀 이주원 입니다.
고객 문의 중 ALB 사용 간에 웹서버 Global 변수 중 [REMOTE_ADDR] 변수에 LB의 주소가 확인되어 이를 클라이언트의 IP로 설정할 수 있는 방법을 문의주셨습니다.
관려하여 이번 글을 작성하게 되었습니다.
Question.
현재 L4 ( application ) - EC2 (PHP) 환경으로 구성되어있습니다.
사이트에서 글로벌 변수를 찍어보면 HTTP_X_FORWARDED_FOR 에는 클라이언트의 IP 가 REMOTE_ADDR 에는 L4 의 주소가 찍히는것 같습니다.
혹시 L4 의 설정 변경으로 REMOTE_ADDR 에 접속하는 클라이언트의 IP 를 찍히게 할 수 있을까요??
Answer.
먼저, AWS 의 ELB 서비스를 사용하여 LB를 구성하게 될 때
HTTP/HTTPS 리스너가 있는 ALB 또는 CLB 에서 클라이언트 IP 는 X-Forwarded-For 이라는 HTTP 헤더에 Client IP가 찍히게 됩니다.
따라서 해당 웹서버 내 환경변수를 확인할 때 고객 문의와 같이 [REMOTE_ADDR] 은 ELB의 IP가 찍히고, [HTTP X FORWARDED FOR] 이라는 변수에 실제 Client IP 가 찍히는 것을 확인할 수 있습니다.
Client IP가 필요한 경우 해당 HTTP X FORWARDED FOR 헤더를 사용하면 되지만, 고객님과 같은 경우 REMOTE_ADDR에 해당 헤더 값이 표기되기를 원했습니다.
고객님 환경과 같이 Apache 웹서버를 사용중이실 경우 웹서버의 httpd 구성을 아래와 같이 변경해줍니다.
- /etc/httpd/conf/httpd.conf 에서 rmoteip_module 모듈을 RemoteIPHeader를 X-Forwarded-For 헤더로 설정해주면 됩니다.
RemoteIPHeader X-Forwarded-For
예시)
변경 전)
변경 후)
이와 같이 구성할 경우 REMOTE_ADDR 에서 HTTP X FORWARDED FOR 헤더 값을 사용할 수 있지만, 더 이상 $_SERVER 값에는 [HTTP_X_FORWARDED_FOR] 값이 표기되지 않으니 상황에 따라 사용하시면 됩니다.
감사합니다.
베스핀글로벌 클라우드기술지원팀
이주원.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.