웹 서버
웹 서버(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]