Nginx 동작원리(feat Aparch,Tomcat) 꼭 보세요!

요한·2025년 9월 6일
0

Nginx 동작원리

Nginx가 나오는데 왜 Nginx가 나왔고 동작원리 및 여러가지에 이점이 있어서 아직도 사랑 받고 있을까 부터 생각했습니다!

Nginx,Apache,Tomcat

백엔드를 공부 하다 보면 Tomcat,Apach 는 많이 들어 봤을 거다.

이들의 동작 방식을 정리하면 왜 nginx를 공부해야하는지 알고 잘 알 수 있을 수 거 같다.

Tomcat

tomcatWAS(Web Application Server),servlet container 라고 부르는곳이 있다고 한다.
기본 포트 8080포트 사용

JSP,Servlet container에 대한 동적인 웹 페이지를 처리한다.
  1. Client 요청
  • 클라이언트가 /login 이라는 요청을 날린다.
  • http 프로토콜은 tomcat 한테 전달 됨
  1. Tomcat mapping을한다.
  • Tomcat 에서 클라이언트가 보낸 요청에 맞는 servlet 를 찾아 매핑
  1. Controller(Servlet)
  • 해당 servlet이 생된다.
  • servlet 에 맞는 service 로직 실행
  1. Response 응답
  • service 로직에서 실행된 결과를 response 객체에 담아 jsp 에 전달된다.
  1. JSP
  • response 객체를 받아 html를 동적으로 구성한다.

Apache

정적 웹 서버(웹서버)HTML, CSS, JS, 이미지 같은 정적 파일처리,프록시 역할
  1. 사용자 http://naver.com 요청
  2. 80,443(http->80, https->433) 받고 8080으로 Proxy 한다.
  3. Tomcat 에 server.xml 설정으로 connector 에서 8080설정이면 모든 8080포트에 대한 설정을 인식한다.
  4. tomcat 실행

Apache + Tomcat

Nginx

정적 웹 서버(웹서버)HTML, CSS, JS, 이미지 같은 정적 파일처리,프록시 역할

이러면 단순히 Nginx 와 Apache 가 뭐 가 다르지? 이렇게 느낄수 있다.

Nginx 동작 원리에서 장점을 찾아 볼 수 있다.

worker 보단 process 가 조금 더 자연 스럽겠네요

Master

클라이언트의 요청에 따라 worker 에 작업을 할당합니다. 작업이 워커에 할당되면 마스터는 클라이언트의 다음 요청을 기다리지 않고 대기한다. worker로부터 응답이 오면 마스터는 클라이언트로 응답을 전송합니다.

worker

각 Worker 는 단일 스레드 방식으로 한 번에 1,000개 이상의 요청을 처리할 수 있습니다. 프로세스가 완료되면 응답이 마스터로 전송된다. 단일 스레드는 서로 다른 메모리 공간 대신 동일한 메모리 공간에서 작업하므로 RAM과 ROM 크기를 절약할 수 있다. 멀티 스레드는 서로 다른 메모리 공간에서 작업한다.

Cache

Nginx 캐시는 서버 대신 캐시 메모리에서 데이터를 가져와 페이지를 매우 빠르게 렌더링하는 데 사용된다. 페이지는 첫 번째 요청 시 캐시 메모리에 저장한다

Apache vs Nginx

둘 다 정적으로 처리하고 프록시도 제공하고 뭐가 다르냐 흠 ??

Apache 동기, Nginx 비동기
구분Apache (동기)Nginx (비동기)
요청 처리요청 1개 → 스레드/프로세스 1개 필요요청 수천 개도 워커 몇 개가 처리 가능
방식Blocking (요청 끝날 때까지 스레드 점유)Non-blocking (I/O 대기 중에도 다른 요청 처리)
자원 효율연결 수만큼 메모리/CPU 소모 ↑소수 프로세스로 대량 처리 가능
적합한 곳소규모 트래픽, 모듈형 동적 처리 (PHP 등)고트래픽, 리버스 프록시, 정적·API 서버

물론 Apache에 동작 방식이 요청 한개당 하나의 process 가 먹는게 옛 방식이긴 하지만 그것 때문에 Nginx 가 등장했고 웹 서버가 점점 발전해 간다!

글 읽어주셔 감사합니다 :->

profile
코드 깍는 개발자 kangyohan.dev.0421@gmail.com

0개의 댓글