CS

웹 서버, WAS, 리버스 프록시

감자b 2024. 12. 26. 00:24

웹 서버

웹 서버란 웹 서비스를 지원해주는 하드웨어나 소프트웨어를 의미한다.

  • 하드웨어 : 웹 서비스를 지원하는 컴퓨터 시스템을 의미한다.
  • 소프트웨어 : 클라이언트로부터 웹 페이지 요청을 받아 정적인 컨텐츠(html, css, jpeg, javascript 등)를 제공하는 컴퓨터 프로그램으로 Apache, Nginx, IIS 등이 있다.
  • 만약 정적인 컨텐츠 대신 동적인 컨텐츠를 제공해야 한다면 WAS에게 해당 요청을 전달하고, 처리 결과를 다시 받아와 클라이언트에게 전달해준다.

만약 이미지 파일을 클라이언트에게 보내야 한다면? 보통 이미지 파일은 HTML 문서와 함께 클라이언트로 보내지지 않는다. 즉 HTML 문서를 먼저 받은 뒤 그에 맞는 이미지를 다시 서버로 요청하고 그 후에 이미지 파일을 받아오게 됨. 이 때 웹 서버를 통하여 이미지 파일을 Application Server까지 가지 않고 빠르게 보내줄 수 있어 서버의 부담을 줄일 수 있다.


Web Application Server (WAS)

  • 동적인 웹 사이트, 웹 애플리케이션, 웹 서비스의 개발을 지원하기 위해 설계된 Application Server로 Tomcat, GlassFish, Jelly 등이 있다.
  • WAS는 웹 서버와 Web Container의 역할을 모두 한다. 따라서 동적 컨텐츠를 제공하는 역할은 Web Container가 하게 된다.

WAS 처리 과정

즉 WAS 하나만 있어도 동작이 가능한데, 그렇다면 WAS와 Web Server를 분리해서 쓰는 이유는 무엇일까? (Reverse Proxy)

  • WAS에는 실제 application 로직이 올라와 있기 때문에 외부와 직접 노출되면 위험이 생길 수 있어 앞 단에 웹 서버를 배치함으로써 보안성을 강화한다.
  • 기능을 분리하여 WAS 서버 부하를 방지한다.
  • 하나의 웹 서버에 Java 서버, PHP 서버와 같이 서로 다른 언어의 서버를 연결하여 안정적인 운영(다른 서버가 작동하지 않아도 다른 서버가 작동, 하나의 WAS에 집중되는 요청을 분산)이 가능하다.

Reverse Proxy

리버스 프록시란 프록시 서버가(서버 사이의 중계기 역할) 웹 서버/WAS 앞에 놓여있는 것을 의미 한다.

즉 일반적으로 다음과 같은 형태를 의미한다. (WAS는 하나의 Web Server에 여러 개 연결 가능)

우리가 구성하는 일반적인 웹 서버(Apache, nginx) - WAS로 분리하는 형태를 의미하며 여기서 웹 서버가 리버스 프록시이다.

이러한 경우 정적 데이터는 별도의 웹 서버가 처리하게 되며 WAS는 Web Container를 통한 동적 데이터를 처리한다.

리버스 프록시의 장점

  • 하나의 웹 서버에 Java 서버, PHP 서버와 같이 서로 다른 언어의 서버를 연결하여 안정적인 운영(다른 서버가 작동하지 않아도 다른 서버가 작동, 하나의 WAS에 집중되는 요청을 분산)이 가능하다.
  • WAS에는 실제 application 로직이 올라와 있기 때문에 외부와 직접 노출되면 위험이 생길 수 있어 앞 단에 웹 서버를 배치함으로써 IP주소를 노출시키지 않아 보안성을 강화한다.
  • 들어오는 요청을 복호화하고 나가는 응답을 암호화해주어 클라이언트와 안전한 통신을 가능하게 한다.