웹 서버(Nginx, Apache..) 의 역할

2025. 10. 18. 23:37·Computer Science/Web Development

클라이언트(브라우저)로부터 들어오는 HTTP 요청을 가장 먼저 받아 처리하는 첫 관문이다. 쉽게 말하면, 사용자와 애플리케이션 서버(Node.js, Spring 등) 사이의 중간 관리자 역할을 한다.

 

1. 정적 파일(Static Files) 제공

웹 서버는 HTML, CSS, JS, 이미지, 폰트 같은 정적 리소스를 직접 클라이언트에 전달한다. 이때 별도의 애플리케이션 로직이 필요하지 않아 속도가 매우 빠르다.

/public/index.html
/assets/style.css
/images/logo.png

이런 파일들은 Nginx나 Apache가 즉시 응답하므로 Node.js 같은 서버는 부담을 덜 수 있다.

 

2. 리버스 프록시(Reverse Proxy)

웹 서버는 클라이언트 요청을 내부 애플리케이션 서버로 전달하는 리버스 프록시 역할을 한다. 즉, 브라우저는 Nginx로 요청을 보내지만 실제 처리는 Node.js나 Spring이 수행한다.

 

예시 (Nginx 설정):

location /api {
  proxy_pass http://localhost:4000;
}

/api로 들어온 요청은 내부의 4000번 포트(Node.js 서버)로 전달된다. 이 구조를 통해 보안 강화와 부하 분산이 가능하다.

 

3. 로드 밸런싱(Load Balancing)

여러 대의 애플리케이션 서버가 있을 때, Nginx는 요청을 균등하게 분산시켜 서버 과부하를 막는다.

 

예시 (Nginx 설정): 

upstream app_servers {
  server app1.local:4000;
  server app2.local:4000;
}

location / {
  proxy_pass http://app_servers;
}

트래픽이 app1과 app2로 번갈아 분배된다.

 

4. SSL/TLS 암호화 처리 (HTTPS)

웹 서버는 클라이언트와의 HTTPS 통신을 담당한다. 인증서(SSL Cert)를 설치하고 TLS 핸드셰이크 과정을 수행해 브라우저와의 데이터를 암호화한다. 이를 통해 보안 통신(HTTPS)을 유지하고, 애플리케이션 서버는 암호화 로직에서 자유로워진다.

 

5. 캐싱(Caching)

Nginx는 자주 요청되는 정적 파일이나 API 응답을 캐싱해 같은 요청이 올 때 서버를 거치지 않고 즉시 응답한다. 이로써 성능이 극적으로 향상된다.

 

예시 (Nginx 설정): 

location /images/ {
  expires 7d;
}

/images/ 아래의 파일은 7일 동안 캐시됨.

 

6. 압축 & 요청 최적화

웹 서버는 gzip, brotli 등의 압축 방식을 사용해 전송 크기를 줄이고 응답 속도를 높인다. 또한 HTTP 헤더를 제어해 브라우저 캐싱 정책을 설정한다.

gzip on;
gzip_types text/css application/javascript;

 

7. 접근 제어 및 보안

웹 서버는 IP 제한, 인증, 방화벽 역할 등을 수행할 수 있다. 예를 들어 특정 IP만 접근 허용하거나, 관리자 페이지를 비밀번호로 보호할 수 있다.

location /admin {
  allow 192.168.0.0/16;
  deny all;
}

 

8. 정리

역할 설명
정적 파일 제공 HTML, CSS, JS, 이미지 등 빠르게 응답
리버스 프록시 내부 서버(Node.js 등)로 요청 전달
로드 밸런싱 여러 서버에 트래픽을 분산
SSL/TLS 처리 HTTPS 암호화 통신 담당
캐싱 자주 쓰이는 리소스를 저장해 응답속도 향상
압축 및 최적화 gzip/brotli 압축으로 전송량 절감
접근 제어 IP 제한, 인증, 방화벽 설정 가능

'Computer Science > Web Development' 카테고리의 다른 글

주소창에 google.com을 입력하면 일어나는 일  (0) 2025.10.18
CORS Error 는 왜 자주 발생할까? — 교차 출처 리소스 공유  (0) 2025.10.18
JWT(Json Web Token)  (0) 2025.10.17
SPA, CSR, SSR, 그리고 Hybrid Rendering — 웹 렌더링의 진화  (0) 2025.10.17
z-index가 같아도 겹치는 순서가 달라지는 이유  (0) 2025.10.16
'Computer Science/Web Development' 카테고리의 다른 글
  • 주소창에 google.com을 입력하면 일어나는 일
  • CORS Error 는 왜 자주 발생할까? — 교차 출처 리소스 공유
  • JWT(Json Web Token)
  • SPA, CSR, SSR, 그리고 Hybrid Rendering — 웹 렌더링의 진화
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;)
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
        • Web Development
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • React
        • Next.js
        • Flutter
        • Testing
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test
        • LeetCode
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML & CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    CPU scheduling algorithm
    모던 자바스크립트 Deep Dive
    mobile app
    js pattern
    Data Structure
    How memory manage data
    스코프
    TCP/IP
    이벤트
    database
    Shared resources
    Network
    딥다이브
    커리어
    leetcode
    Binary Tree BFS
    polylingo
    자바스크립트
    프론트엔드 성능 최적화 가이드
    indie hacker
    structure of os
    VoiceJournal
    need a database
    자바스크립트 딥다이브
    DOM
    testing
    Operating System
    Javascript Essentials
    Time complexity and Space complexity
    Threads and Multithreading
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
웹 서버(Nginx, Apache..) 의 역할
상단으로

티스토리툴바