>백엔드 개발 >PHP 튜토리얼 >Apache와 Nginx 중에서 선택하는 방법

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

*文
*文원래의
2017-12-22 10:20:045859검색

시장에는 많은 웹 서버 제품이 있으며, 주류 제품은 Apache와 Nginx입니다. 그러나 Apache와 Nginx 중에서 선택하는 방법 또한 많은 초보자를 혼란스럽게 만듭니다. 이 기사에서는 Apache와 Nginx를 비교하여 모든 사람에게 더 명확한 이해와 선택을 제공합니다.

1. 소개

Apache:
Apache는 1995년에 만들어졌으며 1999년부터 Apache Software Foundation에서 개발되었습니다. Apache는 유연하고 효율적이며 풍부한 확장 모듈과 활발한 커뮤니티 지원을 갖추고 있어 세계에서 가장 주류인 오픈 소스이자 무료 웹 서버 소프트웨어입니다.

Nginx:
Nginx는 러시아 소프트웨어 엔지니어 Igor Sysoev가 작성한 무료 오픈 소스 웹 서버입니다. nginx는 2004년 출시 이후 고성능, 높은 동시성 및 낮은 메모리 사용량에 중점을 두었습니다. 그리고 로드 밸런싱, 캐싱, 액세스 및 대역폭 제어 기능과 다양한 애플리케이션과의 효율적인 통합 기능으로 인해 사용자들 사이에서 점차 인기를 얻었습니다.

다음은 2017년 11월 21일 업데이트된 최신 웹서버 시장점유율 비교표입니다.

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

2. 비교

아파치와 Nginx는 배경은 다르지만 역할과 목적은 일관되며, 간단히 말해서, 사용자 요청을 받은 다음 요청을 처리하고 마지막으로 처리 결과를 사용자에게 반환합니다.

1. 링크 처리

Apache와 Nginx의 가장 큰 차이점은 연결을 처리하는 방식입니다. Apache는 운영 체제 리소스를 사용하고 프로세스와 스레드 풀을 관리하며 사용자 요청을 제어 및 처리하는 일련의 다중 처리 모듈을 제공합니다.

Apache는 mpm_prefork, mpm_worker, mpm_envent라는 세 가지 다중 처리 모듈을 제공합니다. 아래에서 간단히 설명하고 비교해 보겠습니다.

mpm_prefork: 모듈은 많은 하위 프로세스를 생성하고, 각 하위 프로세스는 단일 스레드이며, 각 스레드는 일대일 관계와 같은 요청을 연결합니다. 따라서 요청 수가 프로세스 수보다 많으면 서버 성능이 만족스럽지 못합니다.

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

mpm_worker: 프리포크와 달리 작업자 중성자 프로세스는 다중 스레드이며 각 스레드는 사용자 연결을 관리합니다. 스레드 수가 프로세스 수보다 큽니다. 이는 프로세스가 유휴 상태가 될 때까지 기다리지 않고 새 연결이 즉시 유휴 스레드를 얻을 수 있음을 의미합니다.

mpm_event: 이 모듈은 작업자와 유사합니다. 차이점은 이벤트가 요청에 의한 스레드의 장기간 점유로 인한 리소스 낭비를 방지하기 위해 긴 연결(연결 유지)을 처리할 수 있다는 점입니다. 또한 높은 동시성 시나리오에서 요청 처리 기능도 향상됩니다. .

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

Apache와 달리 Nginx는 비동기, 비차단, 이벤트 중심 방식으로 구현됩니다. Nginx 작업자 프로세스는 단일 스레드이며 각 스레드는 많은 수의 사용자 요청을 비동기적으로 처리할 수 있습니다. 다음은 Nginx의 작동 원리 다이어그램입니다.

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


2. 정적 및 동적 콘텐츠 처리

정적 콘텐츠이든 동적 콘텐츠이든 Apache에는 이를 처리할 수 있습니다. 구문 분석 및 실행 기능 외부 프로세서가 필요 없는 동적 스크립팅 언어(PHP, Python 및 Perl 포함).

동적 콘텐츠 처리가 아마도 Nginx의 문제점이라는 점에는 의심의 여지가 없습니다. Nginx는 동적 콘텐츠를 처리하는 데 효율적이지 않으며 외부 프로세서의 도움이 필요합니다. 따라서 사이트에 동적 기능이 많으면 Apache의 성능이 더 마음에 들 수도 있습니다. 그러나 Nginx는 Apache에 비해 동적 콘텐츠 처리 기능이 떨어지지만 정적 콘텐츠 처리는 여전히 매우 효율적입니다.

3. 요약

Apache는 풍부한 모듈 구성 요소 지원, 강력한 안정성, 적은 버그 및 강력한 동적 콘텐츠 처리 기능을 갖추고 있습니다.

Nginx는 가볍고 리소스를 적게 차지하며 로드 밸런싱, 강력한 동시성 처리 및 효율적인 정적 콘텐츠 처리 기능을 갖추고 있습니다.

아파치와 Nginx는 WEB 서비스로서 나름의 장점을 가지고 있다는 것은 말이 됩니다. 개인적으로 둘 중 하나가 미래에 다른 하나를 완전히 대체할 것이라고는 생각하지 않습니다. 핵심은 사용자가 자신의 적용 시나리오를 신중하게 고려하고 자신의 필요와 상황에 따라 어떤 제품을 선택할지 결정해야 한다는 것입니다.


관련 읽기:

Ubuntu 16.04에서 Apache HTTP Serve를 구성하는 방법

CentOS7에서 Apache, php7 및 mysql5.7의 자세한 설치 및 구성

LNMP 환경에서 Nginx 서버를 Tengine으로 교체하기 위한 샘플 코드

Nginx 리버스 프록시 및 로드 밸런싱 실습


위 내용은 Apache와 Nginx 중에서 선택하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.