웹 서버

웹 서버(web server)는 HTTP 또는 HTTPS 요청을 수신하고 대상 자원의 표현이나 처리 결과를 응답으로 제공하는 소프트웨어 또는 이를 실행하는 시스템을 가리킨다. 웹의 클라이언트·서버 구조에서 브라우저가 URL로 식별한 자원을 요청하면 웹 서버는 요청 메서드와 경로, 헤더,...

분류서버 소프트웨어
역할HTTP 요청 처리와 자원 제공
관련 기술World Wide Web, HTTP, HTML, URL
참고 명세RFC 9110: HTTP Semantics

웹 서버(web server)는 HTTP 또는 HTTPS 요청을 수신하고 대상 자원의 표현이나 처리 결과를 응답으로 제공하는 소프트웨어 또는 이를 실행하는 시스템을 가리킨다. 웹의 클라이언트·서버 구조에서 브라우저가 URL로 식별한 자원을 요청하면 웹 서버는 요청 메서드와 경로, 헤더, 권한 등의 정보를 처리한다. 응답에는 상태 코드와 헤더, HTML·이미지·데이터 등 다양한 형식의 본문이 포함될 수 있다.

정적 콘텐츠를 제공할 때 웹 서버는 요청 경로를 저장된 파일이나 미리 생성된 결과에 매핑해 전송한다. 동적 콘텐츠는 응용 프로그램과 연동하여 데이터베이스 조회, 템플릿 렌더링 또는 API 처리를 수행한 뒤 생성된다. 정적 서비스와 동적 처리는 같은 서버에서 결합되기도 하고 별도의 리버스 프록시와 애플리케이션 서버로 분리되기도 한다.

HTTP 연결은 TCP 또는 QUIC 같은 전송 계층 위에 구성될 수 있으며, 보안이 필요한 연결은 TLS를 사용한다. 서버는 가상 호스트, 라우팅, 콘텐츠 압축, 캐시 제어, 범위 요청 및 리디렉션을 처리할 수 있다. HTTP/2와 HTTP/3는 다중화와 전송 방식에 차이가 있으므로 서버 설정과 네트워크 환경에 따라 성능 특성이 달라진다.

대규모 서비스에서는 로드 밸런서가 트래픽을 여러 웹 서버에 분산하고 콘텐츠 전송 네트워크가 사용자와 가까운 위치에 캐시된 응답을 제공한다. 리버스 프록시는 TLS 종료, 접근 제어, 응답 캐시 및 내부 서비스 라우팅을 담당하기도 한다. 운영자는 요청 로그, 오류 로그, 지연 시간과 상태 코드의 분포를 바탕으로 서비스의 이상 상태를 확인한다.

웹 서버의 보안은 소프트웨어 업데이트와 권한 분리, 요청 크기 제한, 적절한 MIME 타입 및 보안 헤더 구성에 의존한다. 사용자로부터 받은 경로를 파일 시스템에 직접 결합하면 경로 순회와 임의 파일 노출의 문제가 발생할 수 있다. 널리 사용하는 서버 구현에는 Apache HTTP Server, nginx, Caddy, IIS 등이 있으며 배포 목적과 운영 환경에 따라 서로 다른 모듈과 실행 모델을 제공한다.[1]

역사

초기 HTTP 서버

현대 웹 서버

요청과 응답

HTTP 메서드

상태 코드

헤더와 본문

정적 콘텐츠 제공

파일 매핑

미디어 타입

캐시

동적 콘텐츠 처리

애플리케이션 연동

라우팅

템플릿

네트워크 처리

연결 관리

TLS

HTTP/2와 HTTP/3

배포 아키텍처

리버스 프록시

로드 밸런서

CDN

보안과 운영

접근 제어

로깅

성능과 모니터링

주요 웹 서버

Apache HTTP Server

nginx

Caddy

IIS

관련 문서

  1. RFC 9110: HTTP Semantics ↩