공부한 것

[서버] Nginx

hsnyus 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): 백엔드 서버의 응답 결과를 임시로 저장(캐싱)함. 동일한 요청이 발생할 경우, 백엔드 서버를 거치지 않고 캐시된 데이터를 직접 응답하여 응답 속도를 향상시키고 서버 부하를 감소시킴.