Nginx란?
Nginx는 웹 서버 및 리버스 프록시 서버로 사용되는 경량 웹서버 오픈소스 소프트웨어다.
- 다중 클라이언트 요청을 비동기적으로 처리하여 높은 처리량과 낮은 지연 시간을 보장
- 메모리 사용량도 매우 적어서 리소스 효율성이 뛰어남
Nginx 활용 방법
- HTTP Web Server로 활용
- 클라이언트로부터 요청을 받았을 때 요청에 맞는 정적 파일을 응답한다.
- Reverse Proxy Server로 활용
- WAS 서버의 부하를 줄일 수 있는 로드 밸런서로 활용한다.
** Revere Proxy
외부 클라이언트에서 서버로 접근 시, 중간에서 중개자 역할을 하여 내부 서버로 접근할 수 있도록 도와주는 서버
Nginx 특징
웹서버로 주로 Apache와 Nginx가 사용되는데 두개는 큰 차이점이 있다.
Apache
- 클라이언트로부터 받은 요청마다 쓰레드 생성
- 사용자가 많으면 그만큼 쓰레드가 생성됨
- 1개 쓰래드: 1명 클라이언트 구조
- CPU와 메모리 자원의 소모 큼
Nginx
- 비동기 처리방식(Event-Driven) 구조
- 한 개 또는 고정된 프로세스만 생성하여 사용
- 동기 방식으로 요청들을 Concurrency(동시성) 하게 처리
- 적은 자원으로도 효율적인 운용
- 동시접속에 특화되어있다.
Nginx 구조
하나의 Master Process와 다수의 Worker Process로 구성된다.
Master Process는 기본적인 설정 및 초기화 작업을 담당하고,
Worker Process는 실제 클라이언트 요청에 대한 처리를 담당한다.
Master Process
- Master Process는 Nginx 프로세스의 부모 프로세스로서, 기본적인 설정 로딩과 Worker Process들을 관리한다.
- 설정 파일의 파싱과 로그 파일 등의 초기화 작업을 담당하여 안정적인 서비스를 제공한다.
- Master Process는 여러 개의 Worker Process를 생성하고 관리하는데, Worker Process는 실제 요청을 처리하는 단위이다.
Master-Worker 구조는 가볍고 높은 성능을 제공하여 대규모 웹 서비스에서도 안정적이고 효율적으로 동작한다.
Worker Process
- Worker Process는 Master Process로부터 생성되어 각각 독립적으로 클라이언트의 요청을 처리한다.
- Nginx의 강점 중 하나는 비동기 처리 모델로, Worker Process가 블로킹되지 않고 다중 클라이언트 요청을 효율적으로 처리한다.
- 각 Worker Process는 독립적인 메모리 공간을 갖고 있으므로 하나의 Worker Process가 문제가 발생하더라도 다른 Worker Process에는 영향을 미치지 않는다.
Worker Process의 독립성과 비동기 처리 방식은 서버의 부하를 분산하고 높은 확장성을 보장하여 웹 서비스의 운영과 관리를 더욱 간편하게 만들어준다.
아래는 참고하면 좋을 NGINX 성능 관련 글이다.
<참고>
- https://velog.io/@wijihoon123/Nginx%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
- https://icarus8050.tistory.com/57
'# Development > DevOps' 카테고리의 다른 글
[Nginx] Header Server 정보 수정하기, 지우기 (0) | 2023.06.28 |
---|---|
[Nginx] ubuntu 환경에서 Flask 배포하기 (Github, uWSGI, Socket) (0) | 2023.02.27 |
[WSGI] WSGI란? (0) | 2023.02.13 |
[AWS EC2] 인스턴스 중지 및 시작 (0) | 2023.01.18 |