개발자공부일기

Apache와 Nginx 본문

TIL(Today I Learned)

Apache와 Nginx

JavaCPP 2025. 3. 12. 21:25

Apache HTTP Server

1. 개요

Apache는 1995년에 처음 출시된 오픈 소스 웹 서버로, 현재도 PHP 기반 웹사이트와 전통적인 웹 애플리케이션에서 널리 사용되고 있다.
가장 큰 특징은 모듈화 시스템과 유연한 설정이다.

2. 주요 특징

  • 멀티 프로세스/멀티 스레드 기반 구조
    • MPM (Multi-Processing Module)을 사용하여 요청을 처리
    • prefork, worker, event 등 다양한 처리 방식을 선택 가능
  • .htaccess 지원
    • 개별 디렉터리마다 설정을 변경할 수 있는 유연한 구조
    • 공유 호스팅 환경에서 개별 사용자가 설정 변경 가능
  • 모듈화된 구조
    • mod_php, mod_ssl, mod_rewrite 등 다양한 모듈을 추가하여 기능 확장 가능
  • 광범위한 호환성
    • PHP, Python, Perl, CGI 등의 언어와 원활하게 연동
  • 동적 콘텐츠 처리 최적화
    • mod_php를 사용하여 PHP를 직접 실행 가능
    • PHP 실행 속도가 빠르고 별도의 FastCGI 설정이 필요 없음

3. Apache의 동작 방식

Apache는 MPM (Multi-Processing Module)을 통해 동작 방식을 조정할 수 있다.

 

MPM 방식 특징  장점  단점
prefork 각 요청을 별도 프로세스로 처리 안정성이 높음 메모리 사용량이 많음
worker 하나의 프로세스가 여러 개의 스레드를 생성 더 적은 리소스로 동작 PHP 모듈과 충돌 가능성
event 이벤트 기반 처리 (Nginx와 유사) 동시 연결 처리 성능 향상 설정이 복잡할 수 있음

4. Apache의 장점과 단점

장점

  • .htaccess를 활용한 유연한 설정이 가능
  • 다양한 모듈 지원으로 확장성이 높음
  • PHP와의 호환성이 뛰어남
  • 커뮤니티와 기술 지원이 풍부함

단점

  • MPM(prefork) 방식은 메모리 사용량이 많음
  • 높은 동시 연결 처리 시 성능 저하 가능
  • 정적 콘텐츠 제공 속도가 느림 (Nginx 대비)

 

Nginx (엔진엑스)

1. 개요

Nginx는 2004년 Igor Sysoev가 만든 고성능, 이벤트 기반 웹 서버이다.
초기에는 정적 콘텐츠 제공 및 리버스 프록시 역할을 위해 개발되었지만, 현재는 애플리케이션 서버, API Gateway 등으로도 널리 사용된다.

2. 주요 특징

  • 비동기 이벤트 기반 구조
    • 하나의 워커 프로세스가 수천 개의 요청을 동시에 처리
    • 낮은 리소스로도 높은 성능 유지
  • 정적 콘텐츠 처리 속도 우수
    • 이미지, CSS, JS 등의 파일을 빠르게 제공
    • CDN(Content Delivery Network)으로 많이 활용됨
  • 로드 밸런싱 기능 내장
    • 여러 개의 백엔드 서버로 트래픽을 분산 가능
  • 리버스 프록시 기능 지원
    • 백엔드 애플리케이션(Nginx + Node.js, Nginx + Apache)과 조합 가능
  • PHP 및 동적 콘텐츠 처리 방식
    • PHP-FPM(FastCGI Process Manager)과 연동하여 PHP 실행
    • 웹 서버와 PHP 실행 환경을 분리하여 보안 및 성능 향상

3. Nginx의 동작 방식

Nginx는 비동기 이벤트 기반 처리 방식을 사용한다.

  • 하나의 마스터 프로세스가 여러 개의 워커 프로세스를 관리
  • 워커 프로세스는 이벤트 루프를 사용하여 다수의 요청을 동시에 처리

Apache와 다르게, 각 요청마다 새로운 프로세스를 생성하지 않기 때문에
고성능을 유지하면서도 낮은 메모리 사용량을 보장한다.

4. Nginx의 장점과 단점

장점

  • 높은 동시 연결 처리 가능 (비동기 이벤트 기반 구조)
  • 정적 콘텐츠 처리 속도가 빠름
  • 로드 밸런싱 및 리버스 프록시 기능 제공
  • 적은 리소스로도 높은 성능 유지

단점

  • .htaccess 지원하지 않음 (서버 전체 설정 필요)
  • PHP를 직접 실행하지 못함 (PHP-FPM 필요)
  • 설정이 Apache보다 다소 복잡

Apache vs. Nginx 비교

 

비교 항목 Apache  Nginx
아키텍처 프로세스/스레드 기반 이벤트 기반 (비동기)
처리 방식 요청마다 새로운 프로세스/스레드 생성 하나의 워커 프로세스가 여러 요청을 처리
성능 동적 콘텐츠 처리에 강점 정적 콘텐츠 처리 속도가 빠름
메모리 사용량 다중 프로세스로 인해 많음 적은 리소스로 높은 동시성 유지
PHP 처리 방식 mod_php로 직접 실행 가능 PHP-FPM 사용 필요
로드 밸런싱 기본 제공되지 않음 (모듈 필요) 기본 제공됨
설정 파일 .htaccess 지원 .htaccess 미지원
사용 사례 PHP 기반 웹사이트, 전통적인 웹 애플리케이션 CDN, 리버스 프록시, 대규모 트래픽 사이트

 

그래서 언제 Apache를, 언제 Nginx를 선택해야 할까?

Apache가 적합한 경우

  • .htaccess를 이용한 개별 설정이 필요한 경우
  • PHP 기반 CMS (WordPress, Drupal, Joomla 등)를 사용할 경우
  • 기존에 Apache 환경이 잘 구축되어 있는 경우

Nginx가 적합한 경우

  • 정적 콘텐츠가 많은 사이트 (CDN, 이미지 서버 등)
  • 높은 트래픽을 처리해야 하는 경우
  • 리버스 프록시 또는 로드 밸런서를 구축할 경우

Apache + Nginx 조합

  • Nginx → 프론트엔드 (정적 콘텐츠 처리, 리버스 프록시 역할)
  • Apache → 백엔드 (동적 콘텐츠 처리)

 

'TIL(Today I Learned)' 카테고리의 다른 글

크리티컬 섹션  (0) 2025.03.11
좋은 코드  (0) 2025.02.11
빅 엔디안 & 리틀 엔디안  (0) 2025.02.03
패킷에 헤더 붙여서 전송하기  (0) 2025.01.24
oneof  (0) 2025.01.22