웹서버(Web Server)
웹서버(Web Server)는 웹 클라이언트(웹 브라우저)로부터 HTTP 요청을 받아, 웹 페이지(HTML, CSS, JavaScript 등)를 제공하는 서버이다. 크롬, 엣지, 파이어폭스 같은 브라우저에 URL을 입력하면, 웹서버가 요청을 받아 웹사이트의 내용을 응답해준다.
기본 동작 원리
웹서버와 웹 브라우저(클라이언트)는 HTTP(HyperText Transfer Protocol) 또는 HTTPS(보안이 적용된 HTTP) 프로토콜을 사용해서 통신한다.
💡 웹서버의 기본 흐름
1. 클라이언트(웹 브라우저)가 HTTP 요청을 보냄
- ex. 사용자가 https://www.example.com을 입력하면 브라우저가 웹서버로 요청을 보냄
- 요청 형식 : GET /index.html HTTP/1.1
2. 웹서버가 요청을 처리함
- 요청받은 리소스(HTML, CSS, JS, 이미지 등)를 찾아서 응답을 준비함
- 정적 페이지(HTML, CSS, JS)라면 그대로 응답하고, 동적 페이지(PHP, Python, Node.js)라면 백엔드 서버와 연결하여 데이터를 처리한 후 응답함
3. 웹서버가 클라이언트에게 HTTP 응답을 보냄
- 응답에는 HTTP 상태 코드(ex. 200 OK), 콘텐츠(HTML, JSON 등), 헤더 정보 등이 포함됨
- 브라우저는 이 응답을 받아 웹페이지를 렌더링함
📌 예제 - 요청과 응답 과정
# 클라이언트 요청
GET /index.html HTTP/1.1
Host: www.example.com
# 웹서버 응답
HTTP/1.1 200 OK
Content-Type: text/html
<html>
<head><title>Example</title></head>
<body><h1>Welcome to Example Website</h1></body>
</html>
주요 기능
✅ 1. 정적 콘텐츠 제공
- HTML, CSS, JavaScript, 이미지, 동영상 같은 정적인 파일을 클라이언트에게 제공
- ex. nginx나 Apache 같은 웹서버는 요청에 맞는 파일을 찾아 전달해 줌
✅ 2. 동적 콘텐츠 처리 (백엔드 연계)
- PHP, Python, Node.js, Java 등의 언어로 만들어진 동적 웹 애플리케이션(ex. Spring Boot)을 실행하고 데이터를 생성해 제공함
- 일반적으로 웹서버는 백엔드 애플리케이션과 연계하여 데이터를 받아 응답함
- 요청을 받을 때마다 백엔드 서버(WAS)에서 데이터를 처리하고 결과를 생성해서 응답을 보냄
- ex. 로그인, 게시판, 쇼핑몰, 검색 페이지 등
# 클라이언트 요청
GET /user-profile?id=123 HTTP/1.1
# 서버가 데이터베이스에서 id=123의 사용자 정보를 가져와 동적으로 HTML을 생성해서 응답
HTTP/1.1 200 OK
Content-Type: text/html
<html><body>Welcome, User 123!</body></html>
✅ 3. 요청 라우팅 및 리다이렉션
- 특정 URL에 따라 적절한 컨텐츠 또는 백엔드 서비스로 요청을 전달함
- ex. /api/* 요청을 백엔드 서버로 넘기고, /static/* 요청은 직접 파일을 제공하는 식
# 예시 : Nginx 설정
server {
listen 80;
server_name example.com;
# /static/ 요청 → 정적 파일 제공
location /static/ {
root /var/www/html;
}
# /api/ 요청 → 백엔드 서버로 전달
location /api/ {
proxy_pass http://127.0.0.1:8080;
}
}
✅ 4. 부하 분산 (Load Balancing)
- 여러 대의 서버가 있을 경우, 요청을 적절히 분배하여 성능을 높임
- ex. nginx나 HAProxy 같은 서버는 부하 분산 기능을 제공함
✅ 5. HTTPS 보안 연결
- SSL/TLS 인증서를 사용하여 HTTPS로 보안을 적용하고, 암호화된 통신을 제공함
- HTTPS(SSL/TLS)는 인터넷에서 데이터를 암호화하여 안전하게 전송하는 프로토콜
- 데이터를 암호화해서 해커가 중간에서 가로채도 내용을 알 수 없다.
- ex. Let's Encrypt 같은 무료 SSL 인증서를 사용해 HTTPS를 활성화 가능
주요 소프트웨어
웹서버에는 여러 가지 종류가 있다. 아래는 대표적인 웹서버 소프트웨어들이다.
| 웹서버 | 특징 |
| Apache | 가장 널리 사용되는 웹서버, 모듈을 추가해서 다양한 기능 제공 |
| Nginx | 고성능 웹서버, 정적 콘텐츠 제공 및 부하 분산에 강함 |
| LiteSpeed | 빠른 성능과 적은 리소스 사용으로 인기 |
| Caddy | 자동 SSL(HTTPS) 기능 제공, 설정이 간편 |
| IIS (Internet Information Services) | 마이크로소프트가 제공하는 Windows 웹서버 |
✅ Apache vs Nginx 비교
| 비교 항목 | Apache | Nginx |
| 요청 처리 방식 | 프로세스 기반 | 이벤트 기반 |
| 정적 콘텐츠 성능 | 비교적 느림 | 매우 빠름 |
| 동적 콘텐츠 처리 | 직접 실행 가능 | 백엔드 서버로 전달 (Reverse Proxy) |
| 부하 분산 | 모듈 추가 필요 | 기본 지원 |
💡 요즘은 성능이 뛰어난 Nginx를 많이 사용하지만, Apache도 여전히 많이 사용됨
💡 대규모 서비스에서는 Nginx를 리버스 프록시로 사용하고, 뒤에서 Apache가 동적 콘텐츠를 처리하는 구조도 흔함
- 리버스 프록시(reverse proxy) : 클라이언트 요청을 받아 실제 서버로 전달하고 응답을 다시 클라이언트에게 반환하는 서버
웹서버 VS WAS (웹 애플리케이션 서버)
웹서버(Web Server)와 웹 애플리케이션 서버(WAS, Web Application Server)는 다르지만, 함께 사용되는 경우가 많다.

| 비교 항목 | 웹서버(Web Server) | 웹 애플리케이션 서버(WAS) |
| 역할 | 클라이언트 요청을 받아 정적 콘텐츠 제공 | 동적 웹 애플리케이션 실행 및 데이터 처리 |
| 예제 | Apache, Nginx | Tomcat, Node.js, Django, Flask |
| 정적/동적 | 정적 파일(HTML, CSS, JS) 제공 | 동적 데이터 처리 (DB 연동, API 응답) |
| 처리 방식 | 요청을 단순히 전달하거나 캐싱 | 비즈니스 로직 실행 |
💡 보통 웹서버와 WAS를 함께 사용해서 성능을 최적화함
- ex. Nginx(웹서버) → Tomcat(WAS) → MySQL(DB)
요약
📌 웹서버는 브라우저(웹 클라이언트)로부터 HTTP 요청을 받아, 정적 콘텐츠(HTML, CSS, JS) 또는 동적 콘텐츠(백엔드 서버에서 처리된 결과)를 제공하는 역할을 함
출처
1) OpenAI의 ChatGPT (https://openai.com)
2) 이미지 1 : https://hahahoho5915.tistory.com/51#google_vignette
[간단정리] Web Server(웹서버), WAS 특징 및 차이
개요 Web Server(웹서버), WAS(Web Application Server)의 각각 특징 및 차이점 알아보기 내용 * 웹서버, WAS에 대해 알아보기 전 정적 페이지와 동적 페이지에 대해 간단히 확인하기 Static Pages(정적 페이지) -
hahahoho5915.tistory.com
'Stack > Docker' 카테고리의 다른 글
| 기본 브릿지 네트워크(Brideg Network)가 DNS를 제공하지 않는 이유 (0) | 2025.04.04 |
|---|---|
| 바인드 마운트(Bind Mount) vs 볼륨 마운트(Volume Mount) (0) | 2025.04.03 |
| 도커(Docker) 볼륨(Volume) (0) | 2025.04.01 |
| 도커(Docker)를 사용하는 이유 (0) | 2025.03.31 |
| 도커(Docker), 컨테이너(Container), 이미지(Image) (0) | 2025.03.30 |