웹 서버

최근 편집: 2023년 1월 6일 (금) 15:46

웹 서버(Web Server) 또는 HTTP 서버는 웹 브라우저로부터 요청을 받아 응답하는 서버이다. 주로 HTML 문서 전송을 담당하지만 어떠한 파일도 전송할 수 있다.

동작 원리

웹 서버는 기본적으로 아래 순서로 동작한다.

  1. 웹 브라우저로부터 TCP 연결 요청을 받는다.
  2. 서버가 연결 요청을 수락하면 웹 브라우저에서 문서를 요청한다. (HTTP Request)
  3. 웹 서버는 해당 요청에 대한 적절한 처리 방법을 찾는다.
  4. 추가적으로 처리할 게 있다면 처리한 뒤, 웹 브라우저에 응답한다. (HTTP Response)
  5. HTTP 1.0일 경우 TCP/IP 연결을 끊고, HTTP 1.1 이상이며 연결유지 모드(HTTP keep alive)인 경우 2번으로 돌아간다.
  6. 웹 브라우저는 응답받은 문서를 알맞게 처리한다.

단, HTTP가 아닌 HTTPS 통신인 경우 1번에서 TCP/IP 연결 후 TLS 레이어를 구성하는 과정을 거친다.

분류

웹 서버에는 상용 웹 서버와 오픈소스 웹 서버가 있으며, 두 종류 모두 정적 웹 서버와 웹 응용프로그램 서버(WAS; Web Application Server)가 있다.

정적 웹 서버는 아무 것도 처리할 필요 없이 그냥 파일을 읽어서 그대로 전송하는 기능을 담당한다. 일반적인 웹 서버가 이 기능을 담당하나, 일부 웹 서버는 CGI 표준을 이용해 WAS 기능을 담당할 수도 있다.

WAS는 웹 프로그램 파일을 읽어서 처리한 뒤 그 결과를 전송하는 기능을 담당한다. 정적 웹 서버보다 서버에 부하를 주고, 그에 따라 오버헤드가 있기 때문에 웹 응용프로그램 파일들만 따로 처리하게 된다.

일반적인 환경에서는 WAS를 그대로 메인 웹 서버로 사용하지만, 규모가 큰 사이트는 WAS와 브라우저 사이에 정적 웹 서버를 두어 WAS의 부하를 줄이고 보안을 향상시킨다. 정적 웹 서버가 이같은 역할을 할 때 이를 리버스 프락시라 부른다. 프락시는 WAS에 비해 훨씬 많은 요청을 처리할 수 있기 때문에 프락시 한 개에 여러 WAS를 연결하여 이중화를 하는 경우가 잦다.

종류

상용 웹 서버

  • 마이크로소프트 IIS(Internet Information Services)
  • IBM 웹스피어(자바 WAS)

오픈소스 웹 서버

  • 아파치 웹 서버
  • nginx
  • lighttpd
  • 톰캣(JSP WAS)
  • Caddy

관련 기술 및 웹 프레임워크