[서버] Nginx

2025. 10. 9. 10:55·공부한 것

Nginx(엔진엑스)

  • 웹 서버 소프트웨어로, HTTP, 리버스 프록시, IMAP/POP3 프록시 서버 기능 등을 제공함. 높은 성능과 안정성을 목표로 개발. 적은 리소스로 많은 동시 연결을 처리할 수 있도록 설계됨.

핵심 아키텍처

  • 이벤트 기반 (Event-Driven) 및 비동기 (Asynchronous) 방식: 요청을 처리하기 위해 새로운 프로세스나 스레드를 생성하는 대신 마스터 프로세스(Master Process)가 설정 파일을 읽고, 그 하위에 있는 소수의 워커 프로세스(Worker Process)가 실제 연결을 처리함. 하나의 워커 프로세스는 여러 개의 연결을 동시에 처리할 수 있음. I/O 작업이 발생하면 운영체제 커널에 작업을 위임하고 다른 이벤트를 처리하는 방식으로 동작하여 CPU와 메모리 자원을 효율적으로 사용함.

주요 기능

  • 웹 서버 (Web Server): HTML, CSS, 이미지 등 정적 파일(Static Content)을 클라이언트에 제공함.
  • 리버스 프록시 (Reverse Proxy): 클라이언트와 백엔드 서버 사이에 위치하여 요청을 중개함. 클라이언트의 요청을 받아 내부 애플리케이션 서버(WAS)로 전달하고, 그 응답을 다시 클라이언트에게 반환. 이를 통해 애플리케이션 서버의 IP를 숨기고, SSL/TLS 암호화 처리(SSL Termination)를 전담하여 서버의 부하를 줄일 수 있음.
  • 로드 밸런서 (Load Balancer): 여러 대의 백엔드 서버에 들어오는 트래픽을 분산시켜 특정 서버의 과부하를 방지하고 시스템의 가용성과 확장성을 높임. 주요 분배 방식으로는 라운드 로빈(Round Robin), 최소 연결(Least Connections), IP 해시(IP Hash) 등이 있음.
  • HTTP 캐시 (HTTP Cache): 백엔드 서버의 응답 결과를 임시로 저장(캐싱)함. 동일한 요청이 발생할 경우, 백엔드 서버를 거치지 않고 캐시된 데이터를 직접 응답하여 응답 속도를 향상시키고 서버 부하를 감소시킴.

'공부한 것' 카테고리의 다른 글

[FE] 마이크로 프론트엔드 아키텍처  (0) 2025.10.09
[백엔드] Spring  (0) 2025.10.09
[백엔드] NestJS  (0) 2025.10.08
[서버] 쿠버네티스(Kubernetes)  (0) 2025.10.08
TyprScript와 JavaScript의 차이  (0) 2025.08.03
'공부한 것' 카테고리의 다른 글
  • [FE] 마이크로 프론트엔드 아키텍처
  • [백엔드] Spring
  • [백엔드] NestJS
  • [서버] 쿠버네티스(Kubernetes)
hsnyus
hsnyus
CTF, CS, DEVELOP
  • hsnyus
    hsnyus
    hsnyus
  • 전체
    오늘
    어제
    • 분류 전체보기 (98)
      • About (1)
      • 대외활동 (16)
      • 보안관제 (2)
      • 학교 (3)
      • 개발일지 (5)
      • 공부한 것 (26)
      • 사이버가디언즈 (9)
      • 일반 (8)
      • 스터디 (10)
      • Wargame (18)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    개발
    ctf
    c언어
    문제풀이
    사이버가디언즈
    프로그래밍
    스터디
    DreamHack
    드림핵
    워게임
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
hsnyus
[서버] Nginx
상단으로

티스토리툴바