[Network] Nginx

Bik_Kyun·2022년 4월 21일
0
post-thumbnail

1. Nginx?

Nginx는 간단하게 말하자면 경량 Web Server

클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답해주는 HTTP Web Server로 활용되기도 하고, Reverse Proxy Server로 활용하여 WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용되기도 함

✔️ 참고

Web Server & WAS
Web Server는 무엇일까?
Web Server란 이미지, 동영상, 자바스크립트, HTML, 등 다양한 문서를 제공하는 서버 시스템
주로 HTTP 통신 프로토콜을 통해 리소스를 전달하지만 FTP, SMTP 와 같은 다른 프로토콜도 지원하는 것이 대부분
Web Server의 역할은?

  • 데이터 전송
    HTML 텍스트 파일을 비롯하여 이미지나 음성 데이터 같은 정적인 컨텐츠를 웹 클라이언트에 전송
    이를 이용하면 최근 유행하는 클라이언트 사이드 랜더링(React, Vue, Angular 등)에 의해 생성된 빌드 파일(정적 파일)을 제공할 수 있음
  • 어플리케이션 실행
    위 아키텍처와는 다르게 Web Server 내에 PHP 와 같은 모듈을 내장해서 Web Server가 직접 Application Server 를 실행할 수 있음
    이를 이용해 이미지 압축 등의 기능을 사용할 수 있게 됨
  • 프록시 처리
    클라이언트의 요청을 Application Server 로 전달하는 역할을 함
    이를 이용해 캐시 처리를 할 수 있고 로드 밸런싱 기능, 암호화 기능 등 처리할 수 있으며, Web Server가 사용되는 가장 큰 이유 중 하나이기도 함

2. Nginx를 사용하는 이유

  • 요청 처리 능력이 좋다.
  • 효율적인 메모리 사용량
  • 빠르다.
  • Reverse Proxy로 사용 가능
  • SSL 지원
  • 웹페이지 접근 인증
  • 압축
  • 비동기 처리

3. Nginx 특징

  1. Nginx의 가장 큰 특징은 비동기 Event Driven 에 의한 Non Blocking 처리를 한다는 것이다.
    그에 따라 동시 접속 수가 늘어날수록 물리 메모리가 증가하는 프로세스 기반의 apache 서버에 비해 소비 메모리량이 적어지면서 동시 처리수를 급격하게 늘릴 수 있다.

  1. Single Thread 기반으로 Master / Worker 프로세스 구동 방식을 채택하여 context switching 를 하지 않기 때문에 CPU 사용률을 감소시킬 수 있다.
  • Nginx는 하나의 Master Process와 다수의 Worker Process로 구성되어 실행.
  • Master Process는 설정 파일을 읽고 유효성을 검사하며 Worker Process를 관리.
  • 모든 요청은 Worker Process에서 처리.
  • Nginx는 이벤트 기반 모델을 사용하고, Worker Process 사이에 요청을 효율적으로 분배하기 위해 OS에 의존적인 메커니즘을 사용.
  • Worker Process의 개수는 설정 파일에서 정의되며, 정의된 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정됨.
  1. Nginx는 여러기능을 모듈 단위로 개발하여 Nginx를 컴파일할 때 필요한 모듈들만 조합해서 사용할 수 있다.

  2. 하드웨어 자원을 활용하는 Nginx의 특성상 읽기/쓰기가 자주 일어난다면 Apache가 더 유용할 수 있다.
    만, 대부분의 Web Server에서는 하드웨어 읽기가 발생하지 않는 캐시 제공, 리버스 프록시 서버, 로드 밸런서 등의 역할을 담당하므로 Nginx가 더 선호된다고 볼 수 있다.

profile
비진

0개의 댓글