NGINX와 Tomcat을 활용한 다중 계층 웹 아키텍처 이해

Chooooo·2025년 3월 24일
0

NGINX와 Tomcat을 활용한 다중 계층 웹 아키텍처의 이해

전형적인 다중 계층(multi-tier) 웹 애플리케이션 설계.
NGINX가 프론트엔드 웹 서버(또는 리버스 프록시)역할을 하고 Tomcat이 보다 보호된 환경에서 애플리케이션 서버 역할을 수행한다.

NGINX와 Tomcat 간의 통신 흐름

최종 사용자 접근 제한

최종 사용자(엔드유저 : 클라이언트)는 인터넷에 노출된 NGINX 서버에만 직접 연결할 수 있다. 이는 보안을 강화하고 애플리케이션 로직이 담긴 Tomcat 서버를 직접적인 공격으로부터 보호하기 위함.

요청 처리 흐름

  • 사용자가 웹 브라우저에서 요청을 보내면(예: example.com/app)
  • 요청은 먼저 NGINX 서버(80/443 포트)에 도달한다.
  • NGINX는 이 요청을 적절히 처리한 후, 필요한 경우 내부 네트워크를 통해 Tomcat 서버(8080 포트)로 전달한다.
  • Tomcat이 애플리케이션 로직을 처리하고 결과를 NGINX에 반환한다.
  • NGINX는 최종적으로 이 응답을 사용자에게 전달한다.

보안그룹 설정

NGINX가 Tomcat 서버와 통신하려면 Tomcat 서버의 보안 그룹에서 특정 포트(일반적으로 8080)가 열려 있어야 한다. 그러나 이 포트는 NGINX 서버의 IP나 보안 그룹에서만 접근 가능하도록 제한되어야 한다.

즉, 인터넷에서 직접 Tomcat의 8080포트에 접근할 수 없도록 설정한다.

이 아키텍쳐의 이점

다중 계층 아키텍처의 중요한 이점

1. 보안 강화

Tomcat 서버가 직접 인터넷에 노출되지 않으므로 공격 표면이 줄어든다. NGINX는 웹 애플리케이션 방화벽(WAF) 기능도 제공할 수 있어 추가 보안 계층을 형성한다.

2. 성능 최적화

NGINX는 정적 콘텐츠 제공, SSL 종료, 압축, 캐싱 등에 매우 효율적이어서 Tomcat의 부하를 줄이고 전체 시스템 성능을 향상시킨다.

3. 로드 밸런싱

NGINX는 여러 Tomcat 인스턴스 간에 트래픽을 분산시키는 로드 밸런서 역할도 할 수 있어, 확장성과 고가용성을 제공

4. 유연한 아키텍처

필요에 따라 NGINX와 Tomcat을 독립적으로 확장하거나 구성을 변경할 수 있어 유연성이 높다.

실제 설정

이 아키텍처를 AWS에 구현하면 ...

1. NGINX 서버

퍼블릭 서브넷 또는 로드 밸런서 뒤에 배치

  • 보안 그룹 : 인바운드 트래픽 80/443 포트 허용(인터넷에서), 아웃바운드 트래픽 8080 포트 허용 (Tomcat 으로)

2. Tomcat 서버

  • 프라이빗 서브넷에 위치
  • 보안 그룹 : 인바운드 트래픽 8080 포트 허용 (NGINX 서버 IP 또는 보안 그룹에서만)

이런 구성을 통해 애플리케이션 로직이 담긴 Tomcat 서버는 직접적인 인터넷 접근으로부터 보호받으면서도, 최종 사용자는 NGINX를 통해 웹 애플리케이션에 원활하게 접근할 수 있다.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글