웹서버(Web Server)란?

2024. 9. 16. 11:57·Category/Note
728x90

웹 서버(Web Server)는 클라이언트(사용자의 웹 브라우저)로부터 HTTP 요청을 받아들여, 그 요청에 대한 응답(주로 웹 페이지, 이미지, 파일 등)을 제공하는 역할을 합니다. 웹 서버는 주로 웹 사이트를 호스팅하고, 사용자에게 웹 콘텐츠를 제공하는 데 사용됩니다.

웹 서버의 주요 기능

  1. 요청 처리: 사용자가 브라우저에서 URL을 입력하면, 웹 서버는 해당 요청을 처리하고 적절한 응답(HTML, CSS, JavaScript 파일 등)을 반환합니다.
  2. 정적 파일 제공: 웹 서버는 이미지, 스타일시트(CSS), 자바스크립트 파일과 같은 정적 콘텐츠를 제공합니다.
  3. 동적 콘텐츠 처리: 요청이 동적 콘텐츠(예: 데이터베이스에서 가져온 데이터)를 요구하는 경우, 웹 서버는 해당 요청을 애플리케이션 서버 또는 WSGI 서버(예: Gunicorn)에 전달하여 처리한 후, 결과를 반환합니다.
  4. 보안: HTTPS를 통해 암호화된 연결을 제공하여 사용자와 서버 간의 데이터를 안전하게 보호합니다.

웹 서버의 예시

  • Apache HTTP Server: 오픈 소스 웹 서버로, 가장 널리 사용됩니다. 다양한 모듈을 통해 확장성이 좋습니다.
  • Nginx: 성능이 뛰어난 경량 웹 서버로, 특히 높은 트래픽을 효율적으로 처리할 수 있습니다. 정적 파일 제공과 리버스 프록시 서버 역할로 주로 사용됩니다.
  • Microsoft IIS: Microsoft Windows 환경에서 동작하는 웹 서버입니다.

웹 서버의 동작 방식

  1. 사용자의 요청: 사용자가 브라우저에 URL을 입력하거나 링크를 클릭하면, 브라우저는 웹 서버에 HTTP 요청을 보냅니다.
  2. 요청 처리: 웹 서버는 이 요청을 분석하여, 요청된 리소스가 정적 콘텐츠(이미지, 파일 등)인지, 아니면 동적 콘텐츠(서버에서 처리해야 하는 데이터)인지를 판단합니다.
    • 정적 콘텐츠인 경우, 웹 서버는 해당 파일을 찾아 사용자에게 반환합니다.
    • 동적 콘텐츠인 경우, 웹 서버는 요청을 애플리케이션 서버나 WSGI 서버로 전달하여 처리 결과를 받습니다.
  3. 응답: 요청이 처리되면, 웹 서버는 그 결과(웹 페이지, 파일, 이미지 등)를 사용자에게 반환합니다.

웹 서버와 리버스 프록시

리버스 프록시는 웹 서버가 외부의 요청을 받아 내부의 다른 서버(Gunicorn 같은 WSGI 서버)에 요청을 전달한 뒤, 그 응답을 다시 사용자에게 전달하는 방식입니다. 예를 들어, Nginx는 리버스 프록시로 동작하여 사용자의 요청을 Gunicorn으로 전달한 뒤, 응답을 사용자에게 반환할 수 있습니다.

간단히 요약하면:

  • 웹 서버는 사용자의 요청을 처리하고, 그에 맞는 웹 콘텐츠를 반환하는 소프트웨어입니다.
  • 정적 파일은 웹 서버에서 바로 제공하고, 동적 콘텐츠는 애플리케이션 서버로 요청을 전달하여 처리합니다.
  • 웹 서버는 Nginx, Apache, IIS와 같은 프로그램들이 있으며, 일반적으로 높은 트래픽을 처리하고 보안을 강화하는 데 중요한 역할을 합니다.
728x90

'Category > Note' 카테고리의 다른 글

로그 레벨(Log Level)이란?  (0) 2024.09.16
엔진엑스(Nginx)란?  (3) 2024.09.16
Gunicorn(Green Unicorn)이란?  (0) 2024.09.16
HTML의 앵커(anchor) 태그  (0) 2024.09.14
Ajax(Asynchronous JavaScript and XML)란?  (1) 2024.09.14
'Category/Note' 카테고리의 다른 글
  • 로그 레벨(Log Level)이란?
  • 엔진엑스(Nginx)란?
  • Gunicorn(Green Unicorn)이란?
  • HTML의 앵커(anchor) 태그
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (352)
      • Category (347)
        • Algorithm (7)
        • SQL (1)
        • Java (4)
        • C (9)
        • React (6)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • Chrome Extension (1)
        • Note (76)
        • Socket (1)
        • 개인 정보 처리 방침 (1)
        • 회고 (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    math.h
    Collections
    react
    counter
    시맨틱 버전(semantic versioning
    named export vs default export
    javascript 필수 문법
    json.parse(json.stringify())
    semver)
    chrome extension 자동 배포
    react router
    defaultdict
    중첩 함수(nested function)
    원시값(primitive)
    inp
    core web vitals
    intellij 콘솔 한글 깨짐
    stdlib.h
    ajax (asynchronous javascript and xml)
    Jest
    소프트웨어 버전 관리
    styled-components
    public vs assets
    structuredclone()
    프로세스 강제 종료
    x.y.z (메이저.마이너.패치)
    쉽게 풀어쓴 C언어 Express
    mermaid-cli
    useEffect
    jackson 라이브러리
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
웹서버(Web Server)란?
상단으로

티스토리툴바