1. NGINX란? (웹 서버 사용 이유)

NGINX

Nginx

  • 높은 성능과 안정성이 뛰어난 웹 서버로 현재 가장 많이 사용되고 있는 웹 서버임.
  • Apache와 같은 웹 서버 대비 가볍고, 대규모 어플리케이션 처리에 적합
  • Apache 웹 서버의 성능 제한을 해결하기 위해 작성되었음. 연결당 프로세스 또는 스레드 접근 방식에서 차이점이 존재함.
  • Nginx의 경우 수천개의 HTTP 연결을 동시에 처리할 수 있음. Nginx는 가볍고 확장이 가능함.

정적 컨텐츠

  • 1,000개의 동시 연결 접속을 실행하여 확인한 벤치마크 결과 Apache보다 약 2.5배 빠름. 또한, 메모리 효율성 또한 높게 나왔음.
  • 만약, 동시 접속이나 대용량 서비스 처리면에서 정적 콘텐츠를 제공해야 한다면 NGINX 가 더 나은 선택

웹 서버를 이용하는 이유

WAS의 부담을 줄여주기 위함

  • Spring, Node, FastAPI 등 WAS는 로그인, 회원 가입 등 동적인 작업이 매우 많으며 수많은 연산이 이루어짐(작업량이 많음).
  • HTML, CSS, JS 등 정적인 파일을 클라이언트에게 전달하는 역할을 분리하고 이를 웹 서버에게 위임함으로 WAS의 작업 부담을 줄일 수 있음.

보안 기능을 제공함

  • 보안 기능을 제공하여 웹 페이지에 대한 접근을 제어할 수 있음.
  • SSL/TLS 프로토콜을 활용하여 데이터 암호화 가능
  • 액세스 제어, 웹 방화벽 등의 보안 기능을 제공하여 웹 사이트 보호 가능

높은 성능 제공

  • 비동기 처리를 통해 높은 성능 제공.
  • 이벤트 기반, 멀티 프로세싱, 스레드 풀 등의 기술을 사용하여 수천 대의 클라이언트의 요청을 동시에 처리할 수 있음

많은 웹 서버 중 NGINX를 사용하는 이유

높은 성능, 효율적 메모리 활용

  • 비동기 I/O 처리 방식을 활용하여 높은 성능을 제공함
  • 대규모 서비스에서 빠른 응답을 보장함.
  • 타 웹 서버 대비 메모리 효율성이 높아 성능적 이점이 있음

리버스 프록시(Reverse Proxy) 사용

  • 중간에서 중계를 통해 원하는 서비스로 이동시켜 주는 프록시 역할을 함
  • 포워드 프록시 : 클라이언트와 인터넷 사이에 있는 영역을 의미함. 클라이언트가 어떠한 정보를 요청하면 포워드 프록시가 이를 대신 받아 서버에게 전달.
  • 서버의 반환 값을 포워드 프록시가 받아 이를 다시 클라이언트에게 전달
  • 클라리언트의 IP주소가 웹 서버에 노출되지 않아, 클라이언트의 위치나 신원을 식별이 어려워짐

  • 리버스 프록스 : 인터넷과 백엔드 그 사이의 서버 영역.
  • was 서버가 여러 개 있다고 했을 때 사용자에 요청에 따라 1번 서버와 2번 서버로 요청에 해당하는 웹 서버로 길을 분배해 줄 수 있음 → 로드 벨런싱

SSL

  • 웹 사이트와 사용자 간의 통신을 암호화하고 보안을 유지하는데 사용되는 프로토콜.
  • HTTPS로 알려진 HTTP 프로토콜 기반의 보안 기술
  • SSL 프로토콜을 사용하여 웹 서버와 클라이언트 간의 보안 연결을 설정
  • SSL 인증서를 사용하여 서버의 신원을 인증함.
  • Nginx에 HTTPS 인증서를 제공하여 HTTPS 암호화 가능

비동기처리

  • 이벤트 루프 방식을 활용하여 높은 성능을 제공함.
  • 동시에 여러 요청이 들어왔을 시에도 많은 트래픽을 동시에 처리할 수 있어 빠른 응답을 보장할 수 있음.
  • Event Driven, 비동기 특성을 가짐. 이때 Event Loop 기반으로 요청에 대한 작업을 처리함.
  • Nginx Event Driven 내에서 Event Handler에서 작업을 마치게 되면 완료된 순서대로 Queue에 쌓이고, Event Loop을 돌면서 Queue에 완료된 작업이 있는지 체크하면서 CPU가 IDLE 한 상태가 없도록 활동함

'Infra > NGINX' 카테고리의 다른 글

2. NGINX 설치 With HTTPS(CertBot)  (0) 2024.01.31