전형적인 다중 계층(multi-tier) 웹 애플리케이션 설계.
NGINX가 프론트엔드 웹 서버(또는 리버스 프록시)역할을 하고 Tomcat이 보다 보호된 환경에서 애플리케이션 서버 역할을 수행한다.
최종 사용자(엔드유저 : 클라이언트)는 인터넷에 노출된 NGINX 서버에만 직접 연결할 수 있다. 이는 보안을 강화하고 애플리케이션 로직이 담긴 Tomcat 서버를 직접적인 공격으로부터 보호하기 위함.
NGINX가 Tomcat 서버와 통신하려면 Tomcat 서버의 보안 그룹에서 특정 포트(일반적으로 8080)가 열려 있어야 한다. 그러나 이 포트는 NGINX 서버의 IP나 보안 그룹에서만 접근 가능하도록 제한되어야 한다.
즉, 인터넷에서 직접 Tomcat의 8080포트에 접근할 수 없도록 설정한다.
다중 계층 아키텍처의 중요한 이점
Tomcat 서버가 직접 인터넷에 노출되지 않으므로 공격 표면이 줄어든다. NGINX는 웹 애플리케이션 방화벽(WAF) 기능도 제공할 수 있어 추가 보안 계층을 형성한다.
NGINX는 정적 콘텐츠 제공, SSL 종료, 압축, 캐싱 등에 매우 효율적이어서 Tomcat의 부하를 줄이고 전체 시스템 성능을 향상시킨다.
NGINX는 여러 Tomcat 인스턴스 간에 트래픽을 분산시키는 로드 밸런서 역할도 할 수 있어, 확장성과 고가용성을 제공
필요에 따라 NGINX와 Tomcat을 독립적으로 확장하거나 구성을 변경할 수 있어 유연성이 높다.
이 아키텍처를 AWS에 구현하면 ...
퍼블릭 서브넷 또는 로드 밸런서 뒤에 배치
이런 구성을 통해 애플리케이션 로직이 담긴 Tomcat 서버는 직접적인 인터넷 접근으로부터 보호받으면서도, 최종 사용자는 NGINX를 통해 웹 애플리케이션에 원활하게 접근할 수 있다.