SERVER

웹 서버와 WAS의 차이: Nginx로 이해하기

최서은 2026. 4. 20. 16:52

 

 

우리가 브라우저에서 어떤 웹사이트에 접속하면 내부적으로 여러 단계를 거칩니다.

이미지 파일을 요청하거나, 로그인을 요청하는 등 단순히 서버에 요청하는 것 같지만 서버 입장에서는 두 요청을 처리하는 방식이 다릅니다.

 

이번 포스팅에서는 두 요청을 처리하는 방식이 어떻게 다른 것인지 알아보겠습니다.

 

 

웹 서버(Web Server)

웹 서버는 클라이언트의 요청 중 정적인 콘텐츠를 처리하는 서버입니다.

정적인 콘텐츠는 HTML, CSS, JS 코드와 이미지, 동영상 파일들을 말합니다. 즉, 웹 서버는 이미 만들어져있는 파일을 그대로 전달하는 역할을 수행합니다.

 

대표적인 웹 서버로는 Nginx, Apache HTTP server가 있습니다.

 

웹 서버와 WAS가 분리되어 있을 경우 동적인 요청을 WAS의 컨테이너로 보내주는 역할도 합니다.

따라서 웹 서버는 정적인 콘텐츠를 제공하고, 동적인 요청을 WAS에 전달하고 처리 결과를 브라우저에 응답하는 역할을 수행합니다.

 

 

 

웹 애플리케이션 서버(Web Application Server)

웹 서버는 정적 콘텐츠를 처리하지만, 웹 애플리케이션 서버(WAS)는 동적인 요청을 처리하는 서버입니다.

동적 요청이라고 하면 

  • 로그인 처리
  • 게시글 조회 및 작성
  • 사용자 맞춤 데이터 생성

위와 같이 비즈니스 로직을 통해 처리하는 요청들을 동적 요청이라고 합니다. 가장 대표적인 Tomcat이 있습니다. 

 

WAS에는 애플리케이션 코드의 실행과 관리를 담당하는 컨테이너가 포함되어 있습니다. (서블릿이란? 포스팅에 관련 내용을 참고해주세요.)

 

따라서 WAS는 클라이언트의 요청을 받아 컨테이너를 통해 애플리케이션 코드를 실행하고, 그 결과를 동적으로 생성하여 응답으로 반환하는 역할을 수행합니다.

 

 

 

두 서버를 나누는 이유: Nginx의 역할

  • 부하 분산(Load Balancing): 웹 서버가 앞단에서 정적 요청을 처리해주면 WAS는 오직 복잡한 로직 처리에만 집중할 수 있어 전체적인 시스템 성능이 최적화됩니다.
  • 보안 강화 : 웹 서버는 외부 인터넷과 직접 연결시켜, WAS를 외부 직접 접근으로부터 보호할 수 있습니다. 웹 서버가 리버스 프록시 역할을 수행하며 WAS의 직접적인 IP 노출을 막고 공격자가 바로 WAS나 데이터베이스에 접근하는 것을 방어합니다.
  • 시스템 가용성 : 웹 서버 한 대에 여러 대의 WAS를 연결하는 등 특정 WAS에 문제가 생겨도 정상적인 WAS로 요청을 전달하여 중단 없는 서비스를 이용할 수 있습니다.

 

Nginx

 

엔진엑스는 앞에서 말했듯 웹 서버의 한 종류입니다.

과거의 웹 서버들이 연결 하나당 프로세스나 스레드를 하나씩 할당하던 방식(Apache 등)과 달리, Nginx는 Event-Driven(이벤트 기반) 구조를 통해 비동기 방식으로 처리합니다.

 

이 방식은 적은 수의 스레드로도 수많은 동시 접속자를 효율적으로 처리할 수 있게 해줍니다. Nginx가 Web Server로 가장 많이 선택되는 이유는 바로 이 고성능과 확장성 때문입니다.

 

 

 


 

우리가 웹사이트에 접속하는 과정에 정적 파일은 웹서버가 복잡한 로직은 WAS가 처리하고 있습니다. 이는 단순히 기능을 나누는 것이 아닌 외부 공격으로 부터 내부(WAS, DB)를 보호하고, 고가용성을 확보하며 사용자에게 최적의 응답 속도를 제공하기 위한 방법입니다.

 

 


 

학습용으로 작성한 포스팅이므로 오류가 있을 수 있습니다.

잘못된 내용이나 보완이 필요한 부분이 있다면 댓글로 알려주세요!