Nginx

곽태민·2023년 3월 24일
0

개요


회사에서도 그렇고 저번 프로젝트에서 nginx를 사용해서 서버를 배포를 한 적이 있었다. nginx를 사용해서 서버를 배포하는데 안에 SSL 인증서를 넣어서 서버를 배포를 해주고,,,

근데? docker로 서버를 배포해주고 좀 잘 이해가 가질 않아서 nginx에 대해서 공부를 해보고 직접 적용을 해보려고 한다.

Nginx


Nginx는 최신 웹의 증가하는 요구를 지원하기 위해 개발된 고성능 웹서버다. Nginx는 높은 성능과 높은 동시성, 낮은 자원 사용에 중접을 둔다.

Nginx 흐름


Nginx는 Event-Driven 구조로 동작하기 때문에 한 개 or 고정된 프로세스만 생성해서 사용하고, 비동기 방식으로 요청들을 Concurrency 하게 처리할 수 있다.

Event-Driven
Apache의 C10K 문제점 해결을 위해서 만들어진 구조의 웹서버라고 한다.
OSI7계층 중 Application Level 아래 Level에서 Nginx 같은 웹서버가 HTTP 통신을 담당한다.
C10K = 한 시스템에 동시 접속자수가 1만명이 넘어갈 시 효율적인 방안

그림과 같이 Nginx는 새로운 요청이 들어오면 새로운 프로세스와 스레드를 생성하지 않기 때문에 추가적인 생성 비용이 존재하지 않고, 적은 자원으로 효율적인 운용이 가능하다. 이러한 장점으로 단일 서버에서도 동시에 많은 연결이 가능하다.

Nginx 구조


Nginx는 하나의 Master Process와 다수의 Worker Process로 구성되어 실행이 되고, Master Process는 설정 파일을 읽고, 유효성 검사와 Worker Process를 관리한다.

모든 요청은 Worker Process에서 처리한다. Nginx는 Event 기반 모델을 사용하며, Worker Process 사이에 요청을 효율적으로 분배하기 위해서 OS에 의존적인 매커니즘을 사용한다.

Worker Process의 개수는 설정 파일에서 정의되며, 정의된 프로세스 개수와 사용 가능한 CPU 코어 숫자에 맞게 자동으로 조정된다.

profile
Node.js 백엔드 개발자입니다!

0개의 댓글