본문 바로가기
Research/Server

서버_Nginx를 왜 쓰는가?

by RIEM 2023. 2. 6.

<피케이의 Nginx> 영상 요약
https://www.youtube.com/watch?v=6FAwAXXj5N0


Nginx의 키워드

  • 웹서버, 리버스 프록시, 로드 밸런서, 이벤트 기반 구조, 웹 서버 분야 1등

Nginx를 선택하는 이유?

  • 동시 커넥션에 강하다 -> C10K 문제 해결
  • SSL 터미네이션 : (https -> Nginx -> http), 비즈니스 로직을 대신 처리해줌. 웹 서버 가속기 역할을 함
  • 캐싱 기능 : http 프로토콜로 캐싱 가능
  • HSTS(HTTPS Strict Transport Security)
  • CORS 처리
  • TCP/UDP 커넥션 부하 분산
  • HTTP/2

Apache를 선택하는 이유?

  • 여러 OS에서 잘 호환성이 좋다. 특히 윈도우
  • 모듈로 인한 확장성이 좋다

참고 자료

Apache 탄생 배경

  • 1995년 당시 unix 기반 최초 웹서버 NCSA HTTPd가 주류였으나, 버그가 많았음
  • NCSA HTTPd 버그와 구조를 개선한 것이 Apache
  • 출시 직후 1996년 12월부터 웹서버 1위 (아파치 41%, NCSA HTTPd 12%)

Apache 작동 원리

  • 요청 올 때마다 connection process를 생성
  • 요청이 많이 들어올 것을 대비해 미리 process를 만들어 놓는 prefork 기능이 있음

Apache의 장점

  • 다양한 모듈을 추가하기가 쉬운 구조
  • 요청, 응답을 한 서버에서 처리하기가 용이

Apach의 단점 (C10K 문제)

  • 서버에 동시 연결이 작업이 많아질 때 에러가 발생하기 시작(C10K(Connection 10000 Problem)
  • 구조적 문제 : 커넥션 생성 -> 프로세스 생성 -> 생성된 프로세스가 많아짐 -> 메모리 부족 현상 발생

Nginx의 탄생 배경

  • Nginx는 apache server의 구조적 문제를 개선한 소프트웨어
  • 최초 Apache 서버와 함께 사용하는 보완제 역할로 탄생

Nginx의 역할은 무엇인가?

  • 수 많은 동시 커넥션을 Nginx가 핸들링 -> 동시 커넥션을 처리 못하는 Apache의 한계를 극복하게 해줌
  • 추가로 Nginx 자체로도 웹서버 -> HTML, CSS, JS, 이미지 등 정적 파일은 직접 처리 가능

Nginx의 구조

  • master process : worker process를 생성합니다. CPU의 코어 개수만큼 worker process를 생성합니다.
  • worker process : 실제로 클라이언트의 요청을 처리합니다.

Nginx가 언제 로드 밸런서 역할을 하는가?

  • 여러 동시 커넥션들을 관리할 때 뒷단 서버가 추가해주는데, 이때 Nginx가 로드 밸런서 역할을 함

그럼 Apache는 망했냐?

  • Apache MPM 모듈을 추가하여 여러 커넥션들을 처리해주는 기능을 추가했음
  • 그러나 동시 커넥션 성능은 Nginx가 더 좋음

'Research > Server' 카테고리의 다른 글

서버_Nginx란  (0) 2023.03.06
PM2 모듈 기본 사용법  (1) 2023.03.01
서버_Forward Proxy, Reverse Proxy, Load Balance  (0) 2023.02.06
서버_Serverless란  (0) 2023.02.06
서버_네이버의 Node.js API 서버 개선 사례  (0) 2023.02.03

댓글