Nginx는 Apache와 마찬가지로 HTTP 서버 소프트웨어입니다. 둘 다 기능 구현에서 모듈식 구조 설계를 채택하고 있으며 둘 다 PHP, Perl, Python 등과 같은 공통 언어 인터페이스를 지원하며 순방향 및 역방향 프록시, 가상 호스팅, URL도 지원합니다. 재작성, 압축 전송, SSL 암호화 전송 등
Apache와 NGINX의 주요 차이점은 디자인 아키텍처입니다. Apache는 프로세스 중심 접근 방식을 사용하고 각 요청에 대해 새 스레드를 생성합니다. NGINX는 이벤트 기반 아키텍처를 사용하여 스레드의 여러 요청을 처리합니다.
Apache HTTP 서버는 "httpd" 및 Apache라고도 알려진 오픈 소스 크로스 플랫폼 웹 서버입니다. 그는 Apache Software Foundation의 브랜드와 서비스를 관리합니다. 서버는 ASF 산하 개방형 개발자 커뮤니티에 의해 개발되고 유지됩니다. Apache는 주로 Linux에서 실행되며 전 세계 웹사이트의 46%를 지원합니다. LAMP(Linux, Apache, MySQL, PHP) 스택의 핵심 구성 요소입니다.
NGINX란 무엇인가요? "Engine X"로 발음됩니다. Igor Sisoev가 2004년에 출시한 웹 서버입니다. 오늘날 이는 단순한 웹 서버 그 이상입니다! 처음에는 Nginx를 Apache의 보완재로 주로 사용했지만, 현재는 전체 웹 서버 작업을 처리하는 완전한 웹 서버로 발전했습니다. Nginx는 역방향 프록시, 로드 밸런서, 메일 프록시 및 HTTP 캐시로 사용되는 경우가 많습니다. Apache와 Nginx는 둘 다 가장 일반적인 Linux용 웹 서버입니다. 이들은 모두 네트워크 트래픽의 50% 이상을 처리합니다.
Apache와 NGINX는 많은 특성을 공유하지만 여러 면에서 다릅니다. 각각은 고유한 방식으로 뛰어나며 고유한 목적과 계획을 가지고 있습니다. 차이점을 이해하고 결론을 도출하기 위해 아래에서 상세하고 종합적인 비교를 살펴보겠습니다. 또한 각 포인트 끝에는 각 비교 포인트의 승자를 언급합니다.
Apache와 Nginx의 경우 근본적인 차이점은 디자인 아키텍처에 있습니다. 이는 실제로 연결과 트래픽을 처리하고 다양한 트래픽 상황에 대응하는 방식이 다르다는 것을 의미합니다. 하나는 프로세스 중심 접근 방식이고 다른 하나는 이벤트 중심 아키텍처입니다.
Apache
각 요청에 대해 새 스레드를 생성하는 프로세스 중심 접근 방식입니다. Apache는 다중 스레드 접근 방식을 사용합니다. 다양한 다중 처리 모듈을 제공합니다. 이러한 사전 모듈은 기본적으로 세 가지 유형의 요청 처리 알고리즘입니다. 각각은 서로 다른 서버 요구 사항에 사용됩니다. MM(다중 처리 모듈)은 다양한 연결과 다양한 처리 알고리즘을 선택할 수 있는 유연한 아키텍처를 제공합니다. 또한 다양한 버전의 Apache 2는 다양한 퍼레이드 모듈을 사용합니다. 세 가지 주요 Apache MM은 프로세스(프리포크) MPM, 작업자 MPM 및 이벤트 MPM입니다. 기본적으로 Apache 2.2는 prefork 모드(mpm_prefork)로 구성됩니다. 이는 한 번에 하나의 요청을 처리할 수 있는 일련의 프로세스에 응답합니다. 즉, Apache는 각 연결 요청을 처리하기 위해 매번 새로운 스레드를 생성합니다. 스레드는 스케줄러가 독립적으로 관리할 수 있는 프로그래밍 명령의 가장 작은 시퀀스입니다. 대부분의 경우 스레드는 프로세스의 구성 요소입니다. 그러나 Apache의 기본 아키텍처는 과도한 리소스 소비를 초래할 수 있으므로 서버 문제(예: 속도 저하)를 일으킬 수 있습니다.
이벤트 기반 접근 방식, 하나의 스레드에서 여러 요청을 처리하는 Nginx는 이벤트 기반 아키텍처를 사용하고 요청을 비동기적으로 처리합니다. 비차단 이벤트 기반 연결 처리 알고리즘을 사용하도록 설계되었습니다. 따라서 해당 프로세스는 단일 처리 스레드에서 수천 개의 연결(요청)을 처리할 수 있습니다. 이 연결 프로세스 모듈을 통해 Nginx는 제한된 리소스로 빠르고 광범위하게 작업할 수 있습니다. 또한 저전력 시스템 및 과부하 상태에서 실행되는 시스템에서도 Nginx를 사용할 수 있습니다.
승자는 NGiNX입니다. 구조는 가볍고 아키텍처는 Apache보다 훨씬 빠릅니다. 성능 Apache와 Nginx의 측면에서 두 웹 서버 모두 정적 콘텐츠와 동적 콘텐츠를 다르게 처리합니다. 정적 콘텐츠를 처리할 때는 Nginx가 더 낫다고 하는데, 그게 사실인지 확인해 보겠습니다!
Apache
는 파일 기반 접근 방식을 사용하여 정적 콘텐츠를 제공합니다. 정적 콘텐츠 또는 파일은 일반적으로 CSS 파일, JavaScript 파일 또는 이미지와 같이 서버 컴퓨터의 디스크에 저장됩니다. Apache는 정적 콘텐츠에 대해 전통적인 파일 기반 접근 방식을 사용합니다.
Nginx
Nginx는 정적 콘텐츠를 제공하는 데 있어 큰 형님입니다. Nginx의 디자인 아키텍처는 로드를 더 잘 처리할 수 있기 때문에 정적 콘텐츠를 제공하는 속도가 훨씬 빠릅니다. 최대 1,000개의 동시 연결 벤치마크를 기준으로 Apache보다 2.5배 더 빠른 성능을 발휘합니다. Nginx는 정적 리소스를 제공하므로 PHP는 이를 알 필요가 없습니다. 반면에 Apache는 값비싼 오버헤드로 이러한 모든 요청을 처리합니다. 이는 Nginx를 더욱 효율적으로 만들고 시스템 리소스를 덜 요구하게 만듭니다.
이 작은 이미지는 몇 초 만에 처리되는 정적 콘텐츠 요청을 보여줍니다. Nginx는 분명히 Apache보다 뛰어납니다!
Apache
Apache는 외부 구성 요소에 의존하지 않고 웹 서버 자체 내에서 동적 콘텐츠를 처리할 수 있습니다. 그래서, 그것은 당신 자신을 처리할 수 있습니다. Apache와 Nginx 성능 비교: 동적 콘텐츠 처리를 고려할 때 Nginx는 거의 동일합니다(더 좋지 않더라도). 다음은 동적 콘텐츠 요청 건수를 비교한 것입니다. 겉모습에는 차이가 없습니다.
Nginx
동적 콘텐츠를 처리하지 않습니다. 동적 콘텐츠에 대해 말하면 Nginx는 Apache와 같은 웹 서버의 동적 콘텐츠를 처리할 수 없습니다. 동적 웹 콘텐츠가 포함된 모든 요청은 실행을 위해 외부 프로세스(예: PHP-FPM)로 전달됩니다. Nginx는 최종 콘텐츠가 반환되어 클라이언트에 전달될 때까지 기다립니다. 명확한 아이디어를 얻으려면 다음 이미지를 참조하세요.
SCGI 처리기 및 FastCGI 모듈과 함께 사용하면 NGINX는 동적 콘텐츠를 제공할 수 있습니다. 정적: Nginx는 정적 콘텐츠 측면에서 Apache를 능가합니다. 동적: 둘 다 동적 콘텐츠를 처리하는 데 능숙합니다.
OS 지원은 특히 Apache와 Nginx를 비교할 때 고려해야 할 중요한 사항입니다. 하지만 여기서는 둘 다 거의 비슷합니다.
Apache
는 Linux 및 BSD를 포함한 모든 Unix 계열 시스템을 지원합니다. Linux 또는 BSD와 같은 다양한 Unix 계열 시스템에서 실행되는 MS-WindowsApache를 완벽하게 지원하고 Microsoft Windows를 완벽하게 지원합니다.
Nginx
는 Unix와 같은 거의 모든 운영 체제를 지원합니다. Windows에서는 부분적으로 지원됩니다. 또한 여러 최신 Unix 기반 시스템에서 실행되고 Windows를 일부 지원하지만 Windows 성능은 다른 플랫폼만큼 강력하지 않습니다.
승자는 여기서 Apache입니다.
Apache와 Nginx는 마땅한 주제입니다. 그들의 구성은 서로 다르기 때문에 똑같이 흥미로워집니다. 누구의 구성이 더 쉽고 빠른지 살펴보겠습니다.
Apache
에서는 .htaccess 파일을 통해 디렉터리별로 추가 구성을 허용합니다. 이 아키텍처를 사용하면 권한이 없는 사용자가 기본 구성을 편집할 수 있는 권한을 부여하지 않고도 웹 사이트의 특정 측면을 제어할 수 있습니다. 이건 엄청나다!
Nginx
추가 구성을 허용하지 않습니다. 반면에 단점도 있습니다. 추가 구성을 제공하지 않습니다. 그러나 이렇게 하면 성능이 향상되므로 이점이 있습니다. 디렉터리 구성을 허용하지 않음으로써 Apache보다 더 빠르게 요청을 처리할 수 있습니다. .htaccess 파일을 검색하고 사용자가 만든 요청을 해석할 필요가 없습니다.
우승자: 구성이 문제라면 Apache를 선택하세요. 구성이 문제라면 Apache를 선택하세요. 속도가 NGinx인 경우.
Apache와 Nginx 논쟁에서 요청을 설명하는 방법은 비교할만한 흥미로운 주제입니다. 그들은 모두 완전히 다른 방식으로 요청을 처리하고 해석합니다.
그들의 다양한 접근 방식은 그들을 독특하게 만들고 또한 다른 것보다 조금 더 좋게 만듭니다. 탐험해보자!
Apache
파일 시스템 위치를 전달하여 요구 사항을 해석하는 기능을 제공합니다. 파일 시스템 위치와 같은 물리적 리소스에 대해서는 보다 추상적인 평가가 필요할 수 있습니다. 요청을 파일 시스템 위치로 전달합니다.
물론 Apache는 URI 위치를 사용하지만 일반적으로 보다 추상적인 리소스에 사용됩니다. Apache는 가상 호스트를 생성하거나 구성할 때 문서 루트 아래의 디렉터리 블록을 사용합니다.
이 파일 시스템 위치 기본 설정은 .htaccess 파일을 사용하여 특정 디렉터리 구성을 재정의할 때도 볼 수 있습니다.
Nginx
URI를 통한 요청을 해석하여 Nginx가 웹 서버 및 역방향 프록시 서버로 생성됩니다. 이러한 아키텍처 요구 사항으로 인해 Nginx는 주로 눈으로 작동합니다. 필요한 경우 시스템으로 전환하십시오. 구성을 지정하는 메커니즘을 제공하지 않습니다. 파일 시스템 디렉터리의 경우 URI 자체를 전달합니다. 파일 시스템 위치 대신 요청(URI)을 전달하면 Nginx가 웹 및 프록시 서버에서 쉽게 실행될 수 있습니다. 레이아웃이 차등 요청 패턴에 응답하는 방식에 따라 간단히 구성됩니다.
요청을 처리할 준비가 될 때까지 파일 시스템을 확인하지 않습니다. 이는 .htaccess 파일 형식을 구현하지 않는 이유를 설명합니다. 요청을 URI 위치로 해석하는 이러한 설계를 통해 Nginx는 웹 서버뿐만 아니라 프록시 서버, 로드 밸런서 및 HTTP 캐시로도 쉽게 작동할 수 있습니다.
또한 Apache 대 Nginx 경쟁에서 NGINX는 전송 속도(서버에서 클라이언트로 데이터가 전송되는 속도) 측면에서 다시 승리합니다. 대부분의 경우 Nginx는 500/100의 상당한 비율로 승리합니다.
Winner: Nginx가 더 빠르게 해석하고 응답하기 때문에 승리하는 것 같습니다.
둘 다 모듈 시스템을 통해 확장 가능합니다. 그러나 그들이 일하는 방식은 다릅니다. Apache와 Nginx라는 두 웹 서버의 기능 모듈을 비교해 보겠습니다!
Apache
60개의 동적으로 로드 가능한 공식 모듈을 켜고 끌 수 있습니다. Apache 서버에는 60개의 공식 모듈 중 하나를 설치하여 활성화할 수 있는 풍부한 기능 세트가 있습니다. 그 밖에도 인터넷에서 쉽게 찾을 수 있는 비공식 모듈이 많이 있습니다.
모듈 시스템을 사용하면 필요에 따라 모듈을 동적으로 로드하거나 언로드할 수 있습니다. 해당 모듈을 켜거나 꺼서 기능을 추가하거나 제거하고 메인 서버에 연결할 수 있습니다.
간단히 말하면 Apache에는 사용자의 요구 사항을 충족하는 여러 기능 모듈이 있지만 그 중 대부분은 자주 사용되지 않습니다.
Nginx
타사 핵심 모듈(동적으로 로드할 수 없음) 반면, Nginx는 선택되어 타사 플러그인으로 컴파일됩니다. 동적으로 로드할 수 없습니다. 이러한 모듈은 유용하지만 사용하려는 기능만 포함하여 서버에서 무엇을 얻을지 결정할 수 있습니다. 임의의 구성 요소가 서버에 연결될 수 있기 때문에 Apache 서버보다 훨씬 안전하다고 간주됩니다. 또한 NGINX는 성공에 필요한 경량 및 고성능 기능을 희생하지 않고도 웹 서버의 모든 핵심 기능을 제공합니다. Apache는 Microsoft Word와 같고 Nginx는 메모장과 같습니다. Apache에는 백만 가지 옵션이 있지만 몇 가지만 필요합니다. Nginx는 이러한 작업 중 "몇 가지"를 수행하며 Apache보다 50배 더 빠르게 수행합니다.
우승자: NGiNX – 덜 중요하지만 기능과 모듈 덕분에 Apache보다 더 가볍고 스마트하며 더 나은 웹 서버가 됩니다.
유연성은 웹 서버에서 가장 중요한 문제 중 하나입니다. Apache와 Nginx의 유연성에는 몇 가지 흥미로운 차이점이 있습니다.
Apache
는 동적 모듈을 통해 웹 서버 사용자 정의를 지원합니다. 웹 서버는 ride 모듈을 통해 사용자 정의할 수 있습니다. Apache의 동적 모듈은 로드하는 데 가장 오랜 시간이 걸리므로 모든 Apache 모듈은 이 기능을 지원합니다.
Nginx
은 동적 모듈 및 로딩을 지원할 만큼 유연하지 않습니다. 그러나 NGINX의 경우에는 그렇지 않습니다. 2016년 초에 NGINX는 동적 모듈 로딩에 대한 지원을 얻었습니다. 이전에는 NGINX에서는 관리자가 모듈을 NGINX 바이너리로 컴파일해야 했습니다. 대부분의 모듈은 아직 동적 로딩을 지원하지 않지만 시간이 지나면 지원될 수 있습니다. 승자: Apache – 현 시점에서는 Apache가 확실히 앞서 있습니다.
Apache vs Nginx 보안은 다시 한번 논쟁의 주제입니다. 글쎄요, 두 웹 서버 모두 C 기반 코드 기반에 대해 뛰어난 확장 보안을 제공합니다.
Apache
은 매우 안전합니다. Apache는 서버에서 실행되는 모든 웹사이트가 피해와 해커 공격으로부터 안전함을 보장합니다. 따라서 DDoS 공격 처리를 위한 구성 힌트와 HTTP DoS, DDoS 또는 무차별 대입 공격에 대응하기 위한 mod_evasive 모듈을 제공합니다.
NGINX
보안 강화를 위한 최소한의 코드. 그러나 NGINX의 코드베이스는 규모에 비해 훨씬 작으므로 미래 지향적인 보안 관점에서 볼 때 이는 확실히 큰 이점입니다. NGINX에는 최신 보안 권고 사항도 나열되어 있습니다. Nginx 블로그에서 DDoS 공격 방어에 대한 기사를 읽어보세요. 승자: Nginx – 더 안전한 것으로 간주됩니다.
지원은 모든 고객이 원하는 것입니다. 사용자 경험을 변경하거나 중단시킬 수 있습니다. Apache와 Nginx 지원을 비교할 때 큰 차이는 없는 것 같습니다.
Apache
커뮤니티 지원은 메일링 리스트, IRC 및 Stack Overflow를 통해 이루어집니다. 상용 Apache 지원은 OpenLogic과 같은 많은 타사에서 제공되지만 Apache Foundation은 공식 목록을 유지하지 않습니다. Apache 서버는 모든 사용자에게 강력한 지원을 제공하도록 설계되었습니다.
Nginx
메일링 리스트, IRC, 스택 오버플로 및 포럼을 통한 커뮤니티 지원. NGINX 뒤에 있는 회사는 로드 밸런싱, 미디어 스트리밍 및 모니터링과 관련된 일련의 추가 기능을 지원하는 NGINX Plus라는 상용 제품을 제공합니다.
승자:! 두 가지 모두에 대한 지원은 거의 동일합니다. 두 웹 서버 모두 훌륭합니다.
Apache나 nginx는 서로 대체할 수 없으며 각자의 장점과 단점이 있습니다. 이점, 제한 사항 및 차이점을 이해한 후에는 아마도 어떤 웹 서버가 귀하에게 가장 적합한지 이미 알고 있을 것입니다.
Apache와 Nginx에 대한 게시물에서 9점 중 5점은 Nginx가 이겼고 2점은 Apache와 nginx 간에 "동점"이었습니다. 따라서 NGINX가 Apache보다 앞서 있음을 분명히 알 수 있습니다.
i) Apache.
NGINX는 Apache와 유사한 .htaccess 파일을 지원하지 않습니다. 그러나 Apache를 사용하면 권한이 없는 사용자가 웹 사이트의 특정 중요한 측면을 제어할 수 있다는 이점이 있습니다.
분명히 사용자는 기본 구성을 편집할 수 없습니다. .htaccess 파일을 사용하여 시스템 전체 설정을 디렉터리별로 재정의할 수 있습니다. 최상의 성능을 얻으려면 기본 구성 파일에 이러한 .htaccess 지시문을 포함하십시오. 공유 호스팅 환경에서 Apache는 .htaccess 구성으로 인해 더 잘 작동합니다. 추신: 전용 호스팅 또는 VPS의 경우 Nginx가 가장 좋은 옵션입니다.
ii) 제한된 기능 = Apache 사용
Nginx에는 매우 중요한 핵심 모듈이 있습니다. 그러나 Nginx에는 몇 가지 기능적 제한이 있습니다.
특정 제한 사항이 있거나 Nginx가 지원하지 않는 추가 모듈을 사용해야 하는 경우 대신 Apache를 선택하는 것이 좋습니다.
i) 빠른 정적 콘텐츠 처리
Nginx는 특정 디렉터리의 정적 파일을 처리하는 데 더 나은 작업을 수행할 수 있습니다.
또한 Nginx는 이를 동시에 처리할 수 있기 때문에 대량의 정적 콘텐츠 요청으로 인해 업스트림 서버 프로세스가 차단되지 않습니다. 이는 백엔드 서버의 전반적인 성능을 크게 향상시킵니다.
Nginx는 사용자에게 더 나은 경험을 제공하기 위해 지속적으로 노력하고 있습니다. 2018년에는 눈에 띄는 성장을 보였습니다. Nginx 블로그에서 2018년 주요 내용을 살펴보세요.
ii) 트래픽이 많은 웹사이트에 적합
속도와 높은 부하에서 서비스를 제공할 수 있는 클라이언트 수에 관해 이야기한다면 Nginx는 항상 Apache보다 승자로 빛날 것입니다.
이로 인해 Nginx는 상당히 가볍고 서버 리소스에 이상적입니다. 이것이 대부분의 웹 개발자가 Apache보다 Nginx를 선호하는 이유입니다.
특히 요즘 e-스토어에서는 트래픽이 많은 웹사이트 작업 방법을 알고 Nginx 작업에 능숙한 Magento 개발자를 고용합니다.
간단히 말하면, 트래픽이 많은 웹사이트를 서비스하는 데 있어서 Nginx를 능가하는 것은 없습니다.
두 가지를 동시에 사용하거나, 각 서버의 장점을 함께 결합하여 사용할 수 있습니다.
Apache 앞에 Nginx를 서버 프록시로 사용할 수 있습니다(아래 그림 참조). 이는 Nginx의 빠른 처리 속도와 동시에 대규모 연결을 설정하는 기능을 활용합니다.
정적 연결의 경우 Nginx는 신속하게 클라이언트에 파일을 제공합니다. Php 파일과 같은 동적 콘텐츠의 경우 Nginx 역방향 프록시 서버는 해당 요청을 Apache로 프록시 처리한 다음 Apache에서 결과를 처리하고 렌더링된 페이지를 반환합니다.
Nginx는 최종 콘텐츠를 클라이언트에 전달할 수 있습니다. 또한 이를 통해 클라이언트(다수 사용자)에게 매우 빠르게 서비스를 제공하는 매우 기능적인 웹 서버를 보유할 수 있습니다.
위 내용은 Nginx와 Apache의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!