AWS

[AWS교과서 실습] SSH 터미널에서 vi 편집기를 통해 Apache 파일 설정 수정하기(XFF 필드 추가를 통해 출발지IP보존하기)

cloudlim 2024. 2. 26. 14:21

ALB와 NLB를 통한 로드밸런싱 실습에서 vi 편집기를 통해 Apache의 기본 로그 설정 정보를 수정하는 실습이 진행됩니다.(p188)

 

실습에선 "EC2 Instance A"→"ALB"→" EC2 Instance B" 경로를 통해 인스턴스 B에 접속합니다. 

 

그러나 인스턴스 B의 접속 로그를 확인해보면 출발지 로그에 ALB의 사설 IP 정보만 보여진다는 것을 확인할 수 있습니다.

 

접속 로그를 확인하는 방법은 로그 확인 대상이 되는 EC2 Instance B의 SSH 터미널에서 아래 명령어를 입력합니다.

tail -f /var/log/httpd/access_log |grep -v "ELB-HealthChecker/2.0"

 

 

이후 EC2 Instance A에서 ALB를 통해 EC2 Instance B에 접속해보면 ALB의 사설 IP만 나오고 EC2 Instance A의 IP는 찍히지 않는다는 것을 확인할 수  있습니다.

 

책에서는 출발지 IP 주소를 보존하는 것이 꼭 옳은 것만은 아니라고 합니다. 그치만 출발지 IP, 즉 클라이언트의 IP를 알 수 없다면 로그 분석이나 보안(특정 IP 차단) 등에 어려움이 있을 수 있습니다.

 

그래서 출발지 IP를 보존할 수 있는 방법이 필요한데 

이는 HTTP 헤더에 X-Forwarded-For(XFF) 필드 추가를 통해 해결할 수 있습니다.

 


 

방법은 다음과 같습니다.

 

실습을 진행할 EC2 instance의 세션이 연결된 SSH 터미널에서 아래 명령어를 통해 vi 편집기로 Apache 파일을 엽니다.

vi /etc/http/conf/httpd.conf

 

 

그리고 196번째 줄로 이동합니다. 이때 이동은 방향키로 이동할 수 있고, 명령 모드(최초 진입 시 명령 모드임)에서 아래 명령어를 입력하여 이동할 수도 있습니다.

:196

 

 

196번째 줄에서 문자를 입력하기 위해 명령 모드에서 입력 모드로 변경합니다. 아래 명령어를 입력하여 모드를 변경할 수 있습니다.

i

 

 

이후 방향키를 통해 입력 위치로 커서 이동 후 필드 정보를 입력합니다. 실습에선 다음 정보를 입력했습니다.

%{X-Forwarded-For}i

 

 

입력이 완료됐다면 입력 모드에서 다시 명령 모드로 변경합니다.ESC 키를 눌러 입력 모드에서 명령 모드로 전환할 수 있습니다.

 

 

그리고 vi 편집기를 종료합니다. vi 편집기는 명령 모드에서 아래 명령어를 입력하면 종료할 수 있습니다.

:wq

 

 

설정 변경을 완료했다면 파일을 갱신할 수 있도록 합니다. 실습에선 서버 종료 없이 conf 설정 파일만 갱신하면 됐으므로 SSH 터미널에서 아래 명령어를 입력했습니다.

systemctl reload httpd

 

 

이후 최초에 진행했던 방식으로 다시 EC2 Instance B의 SSH 터미널에서 접속 로그를 확인하고 EC2 Instance A를 통해 EC2 Instance B에 접속해봅니다.