Web Server (웹 서버)
정의
웹 서버는 클라이언트(보통 웹 브라우저)의 HTTP 요청을 받아, 응답을 반환하는 서버 프로그램이다. 정적인 HTML 파일을 제공하거나, 동적인 요청을 CGI나 WAS로 전달하기도 한다.
주요 기능
- HTTP 요청 수신 (GET, POST 등)
- 정적 리소스 제공 (HTML, CSS, 이미지 등)
- 동적 요청을 외부 프로그램이나 백엔드로 전달 (예: CGI, PHP, Node.js)
- MIME 타입에 따라 적절한 Content-Type 헤더 설정
대표적인 웹 서버
- Apache HTTP Server
- Nginx
- Microsoft IIS
- Python의 http.server (간단 테스트용)
CGI (Common Gateway Interface)
정의
CGI는 웹 서버와 외부 애플리케이션(주로 백엔드 스크립트) 사이의 인터페이스이다.
동적인 웹 페이지(검색 결과, 사용자 입력 처리 등)를 만들기 위해 웹 서버가 외부 프로그램을 실행하고, 그 출력 결과를 브라우저에 전달하는 방식이다.
동작 방식
[클라이언트 요청] --> [웹 서버] --> [CGI 스크립트 실행 (ex. Python, C)] --> [HTML 출력]
예시 (CGI 스크립트 in Python)
#!/usr/bin/env python3
print("Content-Type: text/html\n")
print("<html><body><h1>Hello, CGI!</h1></body></html>")
- 웹 서버는 이 스크립트를 실행하고 출력 결과를 브라우저에 응답으로 보냄.
- 실행된 CGI 프로그램은 반드시 HTTP 헤더를 출력해야 하며, 그 뒤에 HTML을 출력.
CGI 특징
항목 | 설명 |
구현 언어 | C, Python, Perl, Shell 등 |
처리 방식 | 프로세스 생성 (비효율적이나 간단) |
단점 | 요청마다 새 프로세스 생성 → 느림 |
대안 | FastCGI, PHP-FPM, WAS (Tomcat 등) |
MIME Type (Multipurpose Internet Mail Extensions)
정의
MIME 타입은 전송되는 파일이나 데이터의 형식을 명시하는 문자열 포맷이다.
웹 서버는 HTTP 응답의 Content-Type 헤더에 MIME 타입을 지정하여 브라우저가 데이터를 어떻게 해석해야 하는지 알려준다.
형식
Content-Type: text/html
- 기본 형식: type/subtype
- 예:
- text/html → HTML 문서
- text/css → CSS 스타일시트
- application/json → JSON 데이터
- image/png → PNG 이미지
- application/octet-stream → 바이너리 (다운로드용)
웹 서버의 역할
웹 서버는 요청된 파일의 확장자에 따라 MIME 타입을 결정한다.
Apache, Nginx는 .conf 또는 .mime.types 파일에서 이를 정의함.
'Deep Dive > CS' 카테고리의 다른 글
[CS] TCP/IP 4계층 모델 (0) | 2025.05.06 |
---|---|
[CS] Datagram Socket vs Stream Socket (1) | 2025.05.06 |
[CS] 소켓(socket, bind, listen, accept, connect, close) (0) | 2025.05.06 |
[CS] 클라이언트-서버 모델 (Client-Server Model) (0) | 2025.05.06 |
[CS] 파일 디스크립터 (file descriptor) (0) | 2025.05.06 |