Nginx 대 Apache: 직접 비교 및 ​​선택 방법

업데이트: 2022-04-19 / 기사 작성자: Timothy Shim

모두 Nginx에 아파치 풍부한 기능 세트와 고성능을 갖춘 성숙한 제품입니다. 공통 오픈 소스 출처를 공유하며 Windows 또는 Linux 서버에 배포할 수 있습니다. 

그러나 몇 가지 주요 차이점으로 인해 하나를 선택할 수 있습니다.

예를 들어 Apache는 즉시 사용 가능한 다양한 기술과 모듈을 지원하는 포괄적인 솔루션입니다. 대조적으로 Nginx는 기능을 확장하기 위해 타사 모듈에 의존합니다.

어느 것을 보려면 웹 서버 귀하의 요구에 더 적합할 수 있으므로 이러한 옵션에 대해 더 자세히 살펴보겠습니다.

Apache – 오리지널 히어로 웹 서버

아파치

1995년에 만든 사람 로버트 맥쿨 원래 "Apache HTTP 서버 프로젝트"(따라서 이름)라고 불렸던 Apache는 수정하더라도 무료로 사용할 수 있는 강력한 상용 등급 서버를 만들기 위해 설계되었습니다. Unix에서 Windows에 이르기까지 다양한 운영 체제에서 실행할 수 있기 때문에 매우 빠르게 인기를 얻었습니다.

이러한 오랜 인기 덕분에 저는 Apache를 "원래 영웅" 웹 서버로 간주합니다. Apache Software Foundation의 후원 하에 있는 개방형 개발자 커뮤니티에서 강력하고 잘 문서화되어 지원됩니다.

Nginx – 새로운 시대의 타이탄

Nginx에

Nginx("Engine X"로 발음)는 HTTP 및 역방향 프록시 서버, 메일 프록시 서버 및 모든 크기의 웹사이트 및 애플리케이션을 호스팅하는 데 사용되는 일반 TCP/UDP 프록시 서버입니다. 러시아 개발자에 의해 처음 공개되었습니다. 이고르 시소 에프. Nginx의 초기 목표는 Apache가 관리하기 어려웠던 C10K 문제를 해결하는 것이었습니다. 

또한 읽기

Nginx와 Apache의 주목할만한 차이점

아키텍처

Nginx와 Apache는 핵심 아키텍처에서 몇 가지 유사점을 공유합니다. 예를 들어, 둘 다 마스터-워커 프로세스를 사용하여 성능을 개선합니다. 비슷한 구성 파일도 있습니다. 그러나 아키텍처 스타일의 차이로 인해 광범위한 성능 변화가 발생합니다.

Nginx에는 로드 시 작지만 일정한 양의 메모리를 사용하는 리소스 친화적인 이벤트 중심 아키텍처가 있습니다. 이러한 특성으로 인해 트래픽 수준이 높거나 트래픽 스파이크가 간헐적으로 발생하는 웹 사이트를 호스팅하는 데 이상적입니다.

Apache의 프로세스 중심 아키텍처는 더 많은 메모리가 필요한 전용 스레드를 통해 각 연결을 처리합니다. 그러나 더 많은 CPU 코어와 RAM이 있는 시스템에서 과부하가 걸리면 더 잘 확장됩니다.

메모리 사용

Nginx는 고성능과 낮은 리소스 소비로 유명합니다. 반면에 Apache는 특히 여러 서버 블록을 실행할 때 메모리 집약적일 수 있습니다. 둘 다 메모리를 사용하여 HTTP 요청을 처리하지만 Nginx는 더 가볍습니다. 

Apache의 설계는 연결당 하나의 스레드를 생성하고 각 스레드가 특정 양의 RAM을 사용한다는 것을 의미했습니다. 트래픽이 증가하면 특히 메모리가 적은 서버에서 더 많은 RAM이 필요하므로 문제가 발생할 수 있습니다. Apache는 동일한 사용자의 경우에도 각 요청에 대해 새 프로세스를 생성합니다.

이에 비해 Nginx는 한 번에 여러 연결을 처리하기 위해 하나의 프로세스를 사용합니다. 

PHP 처리

이 두 웹 서버는 주로 다음과 함께 작동하기 때문에 PHP, 코드를 처리하는 방법은 상당한 성능 잠재력을 의미합니다. Nginx는 기본적으로 PHP를 직접 실행하지 않습니다. 대신 요청을 PHP-FPM(FastCGI 프로세스 관리자), 요청을 처리하고 응답을 Nginx로 다시 보내면 Nginx가 콘텐츠를 다시 클라이언트에 제공합니다.

Nginx는 다른 요청을 처리하기 위해 PHP-FPM의 응답을 기다리지 않기 때문에(정적 콘텐츠를 제공할 때 클라이언트의 응답을 기다리지 않는 것과 유사) Nginx는 Apache가 관리할 수 있는 것보다 더 많은 요청을 동시에 처리할 수 있습니다.

Apache는 mod_php라는 모듈을 사용하여 PHP 코드를 실행합니다. 이 모델에서 HTTP 요청이 들어올 때마다 Apache는 해당 요청을 처리하기 위해 새 프로세스 또는 스레드(구성 방법에 따라 다름)를 생성합니다. 이 프로세스는 해당 요청 내에서 모든 PHP 요청을 처리하는 역할도 합니다.

이 모델은 작동하지만 몇 가지 단점이 있습니다. 한 가지 예로, 모든 요청에 ​​대해 새 프로세스를 생성하는 것은 특히 동시 요청이 많은 경우 시스템에서 집중적일 수 있습니다. 요청 내의 모든 PHP 요청에 대해 새로운 프로세스를 생성하는 것은 운영 체제가 각각에 대해 완전히 새로운 인터프리터를 생성해야 하기 때문에 훨씬 더 집중적입니다.

Nginx와 Apache 중에서 선택하는 방법

보시다시피, 이러한 웹 서버 거대 기업 사이에 확실한 승자는 없습니다. 주로 관리할 웹 서버가 무엇인지에 따라 다릅니다. 

다음과 같은 경우 Apache를 선택합니다. 

  • 시간이 지남에 따라 크게 성장할 가능성이 있고 사용자 정의 모듈이 필요한 중형/대형 웹사이트를 운영하고 있습니다.
  • 서버에 많은 가상 호스트 또는 모듈이 활성화되어 있고 시작할 때 모두 필요합니다.
  • 소규모 웹사이트를 운영 중이고 Nginx를 올바르게 구성하는 방법을 배우는 데 시간을 보내고 싶지 않습니다.

다음과 같은 경우 Nginx를 사용하십시오.

  • 대규모 웹 사이트를 운영 중이며 하드웨어 제한에 대해 걱정하지 않고 캐싱 및 로드 밸런싱을 동시에 쉽게 구성하고 싶습니다.

Nginx 대 Apache에 대한 최종 생각

Apache 또는 Nginx를 실행할지 여부는 요구 사항과 실행 중인 하드웨어에 따라 다릅니다. PHP 웹 사이트를 제공하는 데 두 옵션 중 하나를 사용할 수 있습니다. 그러나 그 외에도 고려해야 할 사항이 많습니다. 

간단한 웹 사이트가 있는 경우 웹 사이트 간에 차이를 느끼지 못할 수 있습니다. 그러나 사이트가 더 많은 트래픽을 얻고 성장한다면 각 서버가 부하를 받는 상태에서 어떻게 작동하고 확장되는지 알아야 합니다.

또한 읽기

Timothy Shim 정보

Timothy Shim은 작가, 편집자 및 기술 괴짜입니다. 정보 기술 분야에서 경력을 쌓기 시작하면서 그는 빠르게 인쇄물을 발견하고 ComputerWorld, PC.com, Business Today 및 The Asian Banker를 포함한 국제, 지역 및 국내 언론 매체에서 근무했습니다. 그의 전문 기술은 소비자 관점뿐만 아니라 기업 관점에서 기술 분야에 자리 잡고 있습니다.