Stack/Docker

웹서버(Web Server)란?

annovation 2025. 4. 2. 08:52

웹서버(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)는 다르지만, 함께 사용되는 경우가 많다.

이미지 1 출처 : https://hahahoho5915.tistory.com/51#google_vignette

비교 항목 웹서버(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