Nginx가 나오는데 왜 Nginx가 나왔고 동작원리 및 여러가지에 이점이 있어서 아직도 사랑 받고 있을까 부터 생각했습니다!
백엔드를 공부 하다 보면 Tomcat,Apach 는 많이 들어 봤을 거다.
이들의 동작 방식을 정리하면 왜 nginx를 공부해야하는지 알고 잘 알 수 있을 수 거 같다.
tomcat은 WAS(Web Application Server),servlet container 라고 부르는곳이 있다고 한다.
기본 포트 8080포트 사용
JSP,Servlet container에 대한 동적인 웹 페이지를 처리한다.
정적 웹 서버(웹서버)HTML, CSS, JS, 이미지 같은 정적 파일처리,프록시 역할
정적 웹 서버(웹서버)HTML, CSS, JS, 이미지 같은 정적 파일처리,프록시 역할
이러면 단순히 Nginx 와 Apache 가 뭐 가 다르지? 이렇게 느낄수 있다.
Nginx 동작 원리에서 장점을 찾아 볼 수 있다.
worker 보단 process 가 조금 더 자연 스럽겠네요
클라이언트의 요청에 따라 worker 에 작업을 할당합니다. 작업이 워커에 할당되면 마스터는 클라이언트의 다음 요청을 기다리지 않고 대기한다. worker로부터 응답이 오면 마스터는 클라이언트로 응답을 전송합니다.
각 Worker 는 단일 스레드 방식으로 한 번에 1,000개 이상의 요청을 처리할 수 있습니다. 프로세스가 완료되면 응답이 마스터로 전송된다. 단일 스레드는 서로 다른 메모리 공간 대신 동일한 메모리 공간에서 작업하므로 RAM과 ROM 크기를 절약할 수 있다. 멀티 스레드는 서로 다른 메모리 공간에서 작업한다.
Nginx 캐시는 서버 대신 캐시 메모리에서 데이터를 가져와 페이지를 매우 빠르게 렌더링하는 데 사용된다. 페이지는 첫 번째 요청 시 캐시 메모리에 저장한다
둘 다 정적으로 처리하고 프록시도 제공하고 뭐가 다르냐 흠 ??
Apache 동기, Nginx 비동기
구분 | Apache (동기) | Nginx (비동기) |
---|---|---|
요청 처리 | 요청 1개 → 스레드/프로세스 1개 필요 | 요청 수천 개도 워커 몇 개가 처리 가능 |
방식 | Blocking (요청 끝날 때까지 스레드 점유) | Non-blocking (I/O 대기 중에도 다른 요청 처리) |
자원 효율 | 연결 수만큼 메모리/CPU 소모 ↑ | 소수 프로세스로 대량 처리 가능 |
적합한 곳 | 소규모 트래픽, 모듈형 동적 처리 (PHP 등) | 고트래픽, 리버스 프록시, 정적·API 서버 |
물론 Apache에 동작 방식이 요청 한개당 하나의 process 가 먹는게 옛 방식이긴 하지만 그것 때문에 Nginx 가 등장했고 웹 서버가 점점 발전해 간다!
글 읽어주셔 감사합니다 :->