
파일 경로 이름을 받아 경로와 일치하는 file contents를 반환합니다.
즉, 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 프로그램입니다.
Web Containers는 JSP, Servlet을 실행시키는 소프트웨어입니다.
클라이언트의 요청(Request)을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달(응답, Response)합니다.
기능을 분리하여 서버 부하 방지
WAS는 기본적으로 동적 컨텐츠를 제공하기 위해 존재하는 서버입니다. 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려질 것입니다. 그 결과 페이지 노출 시간이 늘어나게 될 것 입니다.
물리적으로 분리하여 보안 강화
SSL에 대한 암복호화 처리에 Web Server를 사용
여러 대의 WAS를 연결 가능
Load Balancing을 위해서 Web Server를 사용
fail over(장애 극복), fail back 처리에 유리
대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영 및 장애 극복에 쉽게 대응할 수 있습니다. 예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하고 이용할 수 있습니다.
결론적으로 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성 을 위해 Web Server와 WAS를 분리합니다.
Reference(💡필독추천)

Reference
사용예시
API는 backbone 서버에 있고 홈페이지 웹을 DMZ서버에 설치한 경우 홈페이지에서 API서버를 호출하게 되면 CORS오류가 발생하게 됩니다. 이런 경우 Nginx를 리버스 프록시기능을 이용하여 proxy 서버처럼 사용할 수 있습니다.
사용예시
nginx.conf파일의 server 블록을 이용하여 구현할 수 있습니다. server 블록은 하나의 웹사이트를 선언하는데 사용되며 http://test1.com과 http://test2.com 을 동시에 운영하고 싶은 경우 사용할 수 있습니다.
사용예시
API 서버에 트랙픽이 과도하게 몰려 문제가 발생한다면 API 서버를 여러개 올리고 nginx.conf 설정을 통해 API 서버에 몰리는 트랙픽을 분산시켜서 성능향상을 유도할 수 있습니다.
위의 기술들 외에도 캐싱설정 및 웹 압축, SSL/TLS 보안설정, 성능최적화등 다양한 기능을 제공합니다.
Reference(사용해본 기술 위주로 정리하였고 추가적인 기능들은 아래 URL 참고)