본문 바로가기

AWS

[WEB, WAS] 앞단에 ALB가 있을 때 Apache, Tomcat의 Log에서 Client IP 노출 설정

반응형

전통적인 3 Tier 구조에서 따로 설정을 해주지 않는다면 Client의 IP는 얻지 못할 수도 있다.

 

이는, 앞 단에 LB가 있기 때문인데 앞 단에 ALB가 있냐, NLB가 있냐에 따라서도 다르고 Target Group의 Type이 Instance냐 IP냐에 따라서도 다르지만 이번에는 앞 단에 Application Load Balancer가 있다고 가정을 해볼 것이다.

 

Apache의 Modules 디렉터리에 들어가보면 하기 4개의 Log 관련 모듈들이 있다.

 

modlog_config.so

mod_log_debug.so

mod_log_forensic.so

mod_logio.so

 

(참고로, Apache는 Nginx와 다르게 Module 기반의 Web 서버이기 때문에 여러가지 모듈을 Load하여 다양한 기능들을 사용할 수 있다.)

 

=> Remote Client의 IP 주소를 얻어낼 수 있음

Traffic 흐름

Client -> Application Load Balancer -> Apache 

 

-> Network Load Balancer -> Tomcat -> RDS

 

1. Apache

1. Module을 Load한다. (httpd.conf 파일에서 설정 가능)

modlog_config.so

mod_log_debug.so

mod_log_forensic.so

mod_logio.so

 

2. httpd_vhosts.conf 파일 Include (httpd.conf 파일에서 설정 가능)

 

3. Test를 위한 Tomcat과 연동

4. httpd.conf 로그 포맷 변경

- %{X-Forwarded-For}i
- %{User-Agent}i

 

 

 

2. Tomcat

- Tomcat의 Format 설정 값들 정리

 

3. Log 기록

1. apache access_log

앞에는 Client IP, 뒤에는 ALB의 IP이다.

 

 

2. tomcat access_log

앞에는 Client IP, 그 뒤에는 각각 ALB, NLB의 IP이다.

 

 

 

 

 

 

4. 정리

- Application에서 Log 기록은 추후 문제가 발생했을 시 Trouble Shooting에서 굉장히 중요한 요소이다. 고로, Log 관리를 잘 한다면 나중에 문제 발생할 경우 참고해서 수월하게 문제를 해결할 수 있을 것이라고 본다.

 

반응형