Search
🛶

NginX란?

AI custom autofill
Published
2025/02/23
Category
Programming
Tags
Network
사용해보았던 많은 프레임워크에서 자동으로 웹서버 설정을 해주기 때문에 Apache, Nginx등 써본적도 잘 알지도 못했다.
그래서 이참에 정리를 해보고자 싶어서, 잘 정리된 유투브 영상을 보고 정리를 해보게 되었다.

Nginx란?

웹 서버(Web Server)
클라이언트의 요청을 받아 정적 파일(HTML, CSS, JS, 이미지 등)을 제공
리버스 프록시(Reverse Proxy)
클라이언트 요청을 다른 서버로 전달하여 응답을 중개
로드 밸런서(Load Balancer)
여러 대의 서버로 트래픽을 분산하여 부하를 낮춤
HTTP 캐시(Cache Server)
자주 요청되는 데이터를 캐싱하여 성능 향상
특징:
기존 Apache 서버보다 가볍고 빠름
비동기 이벤트 기반 구조로 동시 연결(Concurrent Connection) 처리에 강점
다양한 기능을 플러그인처럼 추가 가능

웹 서버의 역사와 발전

1.
Apache 서버의 등장 (1995년)
기존 웹 서버의 버그 수정 및 기능 확장을 위해 Apache HTTP Server가 등장
구조적으로 요청이 들어오면 새로운 프로세스를 생성하는 방식(preforking)
다양한 모듈 추가 가능하여 확장성이 뛰어남
하지만 동시 요청이 많아지면 CPU와 메모리 사용량 급증 → 성능 저하 발생
더 많은 프로세스를 생성하고 관리해야하기 때문
2.
C10K 문제 발생 (2000년대)
인터넷 트래픽 증가로 동시 연결 수가 급격히 증가
Apache 구조의 한계(동시 커넥션 증가 시 성능 저하)
새로운 방식의 웹 서버 필요성이 대두
3.
Nginx 등장 (2004년)
기존 웹 서버의 한계를 해결하기 위해 이벤트 기반(Event-driven) 아키텍처 도입
가벼운 구조, 빠른 응답 속도, 뛰어난 동시 연결 처리 성능 제공
대규모 트래픽을 처리하는 대형 기업(Netflix, Instagram, Airbnb, Github 등)에서 빠르게 채택.

Apache vs Nginx

특징
Apache
Nginx
처리 방식
프로세스 기반 (preforking)
이벤트 기반 (Event-driven)
동시 연결 처리
다중 프로세스 생성으로 메모리 부담 있음
비동기 방식으로 리소스 사용 효율적
확장성
다양한 모듈 추가 가능
설정 변경이 쉽고 유연
성능
동적 콘텐츠 처리에 강점
정적 콘텐츠 및 트래픽 분산에 강점
대표 사용 사례
기존 레거시 웹 애플리케이션, 안정성 중요 서비스
실시간 데이터 처리, 대규모 트래픽 환경
Apache는 전통적인 방식으로 다양한 기능을 쉽게 추가 가능하지만, 동시 연결이 많아질수록 성능 저하
Nginx는 이벤트 기반 아키텍처로 동시 연결이 많은 환경에서 뛰어난 성능 제공
두 서버는 대체 관계라기보다 각자의 장점이 있어 상황에 맞게 선택하는 것이 중요

Nginx의 핵심 기능

1.
이벤트 기반 구조
Apache의 프로세스 기반 모델과 달리, 하나의 프로세스 내에서 비동기 이벤트 방식으로 요청 처리
CPU 컨텍스트 스위칭을 최소화하여 동시 연결 수가 증가해도 안정적인 성능 유지
2.
리버스 프록시 & 로드 밸런서
Nginx가 클라이언트 요청을 대신 받아 백엔드 서버에 전달
여러 개의 서버에 요청을 분산하여 트래픽 부하 감소
3.
SSL 터미네이션
Nginx가 SSL/TLS 복호화를 담당하여 백엔드 서버의 기능 개발 및 성능 부담 완화
4.
HTTP 캐싱
자주 요청되는 정적 리소스를 캐싱하여 서버 부하 감소 및 응답 속도 향상
5.
동적 설정 변경 가능
서버를 재시작하지 않고도 설정을 변경할 수 있어 운영 관리가 유연

Nginx의 성장과 현재

2008년 스마트폰 보급 이후 웹 트래픽 급증 → 동시 연결 문제 해결을 위한 Nginx 수요 증가
2021년 기준 전 세계 웹 서버 점유율 1위
대규모 트래픽을 처리하는 클라우드 서비스, CDN, 스트리밍 플랫폼에서 널리 사용
물론 아파치도 MPMs(Multi Processing Module)를 활용하여 Prefork / Workers 방식 도입
성능테스트 결과를 보면 동시 커넥션대비 메모리 사용량 및 초당 처리수에서 Nginx가 Apache를 월등히 앞섬
ref: dreamhost.com
ref: dreamhost.com
Apache 서버가 1등을 할 때에는 안정성과 확장성이 무엇보다 중요했고, 현재 Nginx는 동시 커넥션 문제가 대두되면서 필요한 상황이라고 한다.
공부를 하면 할 수록 어떤 기술이 최고다 라는 것 보다, 서비스 상황에 맞게 구현방향성을 잡아 나가는 게 중요하다는 생각이 든다.
물론 많이 알아야겠지….. 공부 많이 해야겠지….
다음엔 직접 하나씩 셋팅을 해보는 방향으로 공부한 내용을 적용해보아야겠다!