Apache 대 Nginx 서버: 이 두 가지 서버 유형에 대한 요약
게시 됨: 2022-01-03인터넷은 서버 모음에서 실행됩니다. 그러나 이들은 표준 데스크탑 컴퓨터와 설정이 다릅니다. 능숙한 시스템 관리자 또는 백엔드 개발자는 이 선택을 자신의 요구에 맞게 최적화할 것입니다. 이를 수행하는 주요 방법은 서버 소프트웨어를 선택하는 것입니다. 이 분야에서 인기 있는 비교 중 하나는 Apache 대 Nginx입니다.
이는 여러 가지 이유가 있지만 사용 횟수와 수명이 두 가지 주요 원인입니다. Nginx는 최신 웹 표준을 지원하는 최신 버전입니다. 그러나 Apache는 펀치를 당기지 않으며 전 세계 수백만 명의 사용자에게 웹 사이트를 제공할 수 있습니다.
이 포스트에서 우리는 Apache와 Nginx의 비교를 제공할 것입니다. 두 서버 유형의 인기도와 같은 표면적 요소를 살펴보겠습니다. 그러나 각각의 기술적 기능과 고려 사항도 자세히 살펴보겠습니다. 결국 두 소프트웨어 유형의 기능과 서버에 가장 적합한 유형을 알게 될 것입니다.
Apache와 Nginx란?
이 기사를 읽으면 웹 서버가 최적의 성능을 제공하기 위해 전문 소프트웨어가 필요하다는 것을 이해하고 있을 것입니다. 이 기사에서는 일반적인 의미에서 서버 소프트웨어가 무엇인지 또는 어떤 역할을 하는지는 다루지 않지만 서버를 위한 두 가지 주요 솔루션을 다룰 것입니다.
- 아파치. 이것은 대부분의 Linux '배포판'과 함께 사전 설치된 무료 오픈 소스 소프트웨어입니다. 1995년부터 존재했으며 이 두 가지 요인으로 인해 시장에서 거의 선도적인 위치를 차지했습니다.
- 엔진엑스. 다른 서버 소프트웨어에 비해 상대적으로 아기지만 Nginx는 많은 사용자를 보유하고 있습니다. 현재 작성 중인 가장 인기 있는 서버 소프트웨어는 Apache와 거의 공동 1위입니다(자세한 내용은 나중에 제공).
Apache는 수십 년 동안 서버 소프트웨어를 주도해 왔으며 그 기간 동안 큰 시장 점유율을 보였습니다. 그러나 Nginx는 현재 선두주자이지만 그다지 많지는 않습니다.

캡션: 여기 google Trends의 파란색 선은 2004년 이후 Apache에 대한 검색을 나타내고 빨간색 선은 Nginx와 관련이 있습니다.
Apache와 Nginx가 테이블에 가져오는 것에 관해서는 이 주제에 대한 여러 책을 채울 수 있습니다. 그러나 우리는 이것을 2,000단어 이내로 하려고 합니다. 둘 다의 일반적인 기능 세트부터 시작합니다.
Apache 및 Nginx의 일반적인 기능
Apache와 Nginx는 모두 HTTP 웹 서버 소프트웨어이기 때문에 많은 유사점을 찾을 수 있습니다. 예를 들어 둘 다 오픈 소스이므로 다양한 시스템에서 작동합니다. 확장하면 둘 다 유연하고 확장 가능하지만 각 서버 유형에 대해 서로 다른 목표가 있습니다.
그러나 Apache와 Nginx는 두 소프트웨어 모두 다른 방식으로 웹 서버를 구성하는 프로세스에 접근한다는 점에서 진정한 비교가 아닙니다. 실제로는 둘 다 다른 응용 프로그램에 더 적합합니다.
이 기사의 나머지 부분에서는 Apache 및 Nginx에 대한 기술 세부 정보를 분석하여 이를 보여줍니다. 다룰 내용은 다음과 같습니다.
- 요청 및 연결 처리, 캐싱 기술 등을 포함하는 각 서버 소프트웨어 유형의 기술 분석.
-
.htaccess
파일 및 모듈에 대한 세부 정보를 포함하여 Apache 구성 및 확장. - Nginx를 구성하는 방법과 확장성.
이것은 별로 고려할 사항이 아닌 것 같지만, 각각을 다른 여러 하위 섹션으로 압축 해제할 수 있습니다. 기술적인 차이점부터 시작하여 정확히 이 작업을 수행합니다.
Apache와 Nginx의 기술적 차이점
일반적으로 Apache와 Nginx는 최적의 웹 서버라는 동일한 목표를 달성하기 위해 거의 고유하고 독점적인 경로를 사용합니다. 크게 비교해보면 다음과 같은 차이점을 알 수 있습니다.
- Apache는 '프로세스 중심' 아키텍처를 사용하는 반면 Nginx는 '이벤트 중심' 아키텍처를 사용합니다.
- 두 가지 유형 모두 정적 파일을 서버하지만(비록 다른 방식으로) Nginx는 동적 콘텐츠를 서버하지 않습니다.
- 각 소프트웨어 유형은 다른 핵심 방식으로 HTTP 요청을 해석합니다.
연결 처리 고려 사항부터 시작하여 이러한 측면 중 일부를 살펴보겠습니다.
연결 처리
Apache 대 Nginx는 각 유형이 연결 및 요청을 처리하는 방법에 많은 중요성을 둡니다. 예를 들어 Apache는 mpm_prefork
라는 처리 모듈을 사용하여 각 스레드에 대한 새 요청을 생성하는 프로세스 중심 접근 방식을 사용합니다. 요청 수가 프로세스 수보다 적은 경우 속도가 빨라질 수 있지만 이후에는 성능이 저하됩니다.
실제로 Apache는 mpm_prefork
, mpm_worker
및 mpm_event
모듈을 사용하여 필요에 맞게 연결 처리 알고리즘을 생성할 수 있는 많은 유연성을 제공합니다. 대조적으로 Nginx의 설계는 Apache가 가지고 있는 부정적인 성능 측면을 완화하려고 시도하는 것과 같습니다.
이벤트 기반 기반으로 작업자 프로세스를 생성하는 방식을 통해 이를 수행합니다. 즉, Nginx는 단일 스레드 내에서 여러 요청을 관리할 수 있으므로 확장성이 뛰어납니다.
통역 요청
Apache와 Nginx는 또한 서버가 수신할 요청을 해석하는 데 다른 접근 방식을 취합니다. 예를 들어 Nginx는 요청의 URI(Uniform Resource Identifier)를 사용하여 요청을 파일 시스템의 물리적 요소로 변환합니다.
server
및 location
과 같은 일부 구성 블록 형식으로 이를 확인할 수 있습니다. URI를 구문 분석하고 파일 시스템 내에서 무언가로 변환하기 위해 함께 작동합니다.
server { listen 80; server_name example.org www.example.org; root /data/www; location / { index index.html index.php; } location ~* \.(gif|jpg|png)$ { expires 30d; } location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
대조적으로, '순수한' 웹 서버 소프트웨어로서의 Apache의 뿌리는 모든 요청이 파일 시스템의 리소스라는 것을 기반으로 가정하고 작동한다는 것을 의미합니다. 그러나 Apache는 요청이 더 추상적인 URI로 작업할 수도 있습니다. 그럼에도 불구하고 문서에서는 파일 기반 방법 이외의 다른 방법을 사용하지 말라고 경고합니다.
정적 및 동적 성능
성능과 관련하여 Apache와 Nginx는 거의 모든 사용자에게 중요한 고려 사항입니다. 컨텍스트에서 비교는 각 소프트웨어 유형이 정적 및 동적 콘텐츠를 제공하는 방식으로 요약됩니다.

Apache의 고유한 아키텍처는 파일 시스템과 직접적인 방식으로 작동하기 때문에 정적 콘텐츠를 제공하는 데 탁월합니다. 그러나 서버 내에서 동적 콘텐츠도 처리하므로 요구 사항에 따라 모듈을 교체해야 하는 경우에도 유연하게 구현됩니다.
이에 비해 Nginx는 동적 콘텐츠를 전혀 처리하지 않습니다. Nginx는 이러한 요청을 외부 작업자나 프로토콜에 전달해야 하기 때문에 더 복잡합니다. 그럼에도 불구하고 성능 오버 헤드가 적고 Nginx는 적응력이 뛰어난 다른 프로토콜을 활용할 수 있습니다.
정적 콘텐츠의 경우 이는 Apache만큼 간단할 수 있으며 경우에 따라 더 나은 성능을 제공하는 옵션입니다. 이는 Nginx가 서버 소프트웨어의 전체 성능에 내재된 부분이 아니라 필요할 때 인터프리터에 연결할 수 있기 때문입니다.
Apache의 분산 구성 모델
Apache와 Nginx가 서버 구성에 대해 서로 다른 접근 방식을 사용한다는 것은 놀라운 일이 아닙니다. 간단히 말해서 Apache와 Nginx의 구성은 디렉터리 수준에서 수행할 수 있는지 여부에 달려 있습니다.
Apache는 분산 모델을 사용하므로 디렉토리별로 서버를 구성할 수 있습니다. .htaccess
파일을 통해 이 작업을 수행합니다. Apache는 .htaccess
파일에 대해 요청된 파일 경로의 각 구성 요소를 확인하고 내부의 지시문을 수행합니다.

우리의 의견으로는 .htaccess
파일이 다른 시스템보다 훨씬 유연합니다. 빠르게 찾고, 열고, 편집할 수 있습니다. 많은 강력한 작업을 수행할 수 있는 손끝의 힘은 웅장합니다. 또한 Apache 서버는 서버를 다시 로드할 필요 없이 파일을 발견할 때마다 .htaccess
파일을 처리한다는 것을 알게 될 것입니다.
일부 사용자가 전체 서버 구성에 영향을 미치는 범위 내에서 사이트의 측면을 제어하도록 허용해야 하는 경우에도 환상적입니다. 이것이 Apache 서버가 유연한 모듈 시스템과 함께 공유 호스팅 플랫폼의 주류인 이유입니다.
아파치의 모듈
Apache를 사용하여 동적으로 모듈을 로드 및 언로드할 수 있습니다. 이것은 WordPress 내에서 플러그인 및 테마를 사용하는 것과 유사합니다. 핵심 Apache 기능은 기본 단계를 수행하는 반면 활성 모듈은 고유한 경험을 만드는 데 도움이 됩니다.
이러한 모듈은 많은 영역을 다룰 수 있으며 많은 것을 사용할 수 있습니다. mod_php
와 같은 모듈은 서버의 핵심 기능을 변경할 수 있는 반면 인기 있는 mod_rewrite
를 사용하면 다른 많은 작업을 수행할 수 있습니다.
- IP 주소를 제한합니다.
- 사이트의 홈 폴더 변경.
- 301 리디렉션을 수행합니다.
- 기본 홈 페이지를 설정합니다.
.htaccess
와 동적 모듈 시스템 사이에서 Apache는 대부분의 사용자가 웹 서버와 사이트를 수정하고 최적화할 수 있는 명확한 방법을 나타냅니다.
Nginx의 중앙 집중식 구성 모델
Nginx는 서버 구성에 대한 중앙 집중식 접근 방식을 취합니다. 이것은 하나의 구성 파일이 있음을 의미합니다( .conf
확장자로 끝남). 서버 구조에 따라 찾기 어려운 경우가 있습니다.
이것은 서버를 변경하려는 신진 사이트 소유자에게 몇 가지 분명한 단점이 있습니다. 공유 호스팅 사이트의 경우 서버를 구성하는 것이 거의 불가능합니다. 유연성도 훨씬 떨어집니다.
그러나 성능을 기반으로 하는 몇 가지 장점도 있습니다. Nginx는 구성 파일에 대한 위치가 하나만 있고 Apache는 잠재적으로 여러 위치를 사용할 수 있기 때문에 조회는 하나만 있습니다. 확장하면 해당 구성 파일을 찾는 데에도 성능 저하가 덜 발생합니다.
또한 구성이 중앙 집중식이므로 사이트 소유자는 보안 관련 측면을 관리할 책임이 없습니다. 보안 책임은 시스템 관리자에게만 있기 때문에 이것은 Nginx의 접근 방식에 대한 또 다른 이점입니다.
Nginx의 모듈
Nginx의 모듈 시스템은 동일한 종류의 기능을 제공함에도 불구하고 Apache만큼 관대하거나 유연하지 않다고 말하는 것이 타당합니다. 예를 들어 Nginx의 리디렉션 규칙을 사용합니다.
server { listen 80; server_name www.olddomain.com; return 301 $scheme://www.newdomain.com$request_uri; }
Nginx에서는 동적 요소로 로드할 수 없기 때문입니다. WordPress 비유로 돌아가려면 플러그인을 비활성화하기 위해 전체 사이트를 다시 설치해야 하는 것과 같습니다.
표면적으로 이것은 실행 가능한 것처럼 보이지 않으며 엄청난 손해로 보입니다. 그러나 유연성이 부족하면 핵심 안정성과 기능을 얻을 수 있습니다. 빌드 시 서버에 필요한 것이 무엇인지 알고 있다면 해당 구성 요소와 모듈을 모두 포함할 수 있습니다.
보안 측면도 고려해야 합니다. 시스템 안팎에서 동적 모듈을 교환하지 않기 때문에 모든 요소가 무엇을 하고 할 수 있는지 알게 될 것입니다. 서버의 구조와 아키텍처를 명확하고 유지 관리하기 쉽고 성능도 향상시킵니다.
Apache 또는 Nginx를 사용하는 이유
요약하자면 Apache와 Nginx는 명확한 결정이 아닙니다. 처음에는 Nginx가 Apache보다 더 나은 성능을 제공한다는 일반적인 의견은 오해의 소지가 있습니다. Apache 서버를 잘 설정하면 동등한 Nginx 서버만큼 성능이 좋습니다.
Apache는 간단한 방법으로 정적 및 동적 콘텐츠를 모두 제공하는 데 적합합니다. 서버 관리가 처음인 사용자에게 강력한 기능과 구성의 유연성을 제공합니다. 일반적으로 Nginx보다 Apache 서버를 구성하는 데 필요한 기술 지식이 적습니다.
그러나 성능은 Nginx가 빛나는 곳입니다. 아키텍처 설정은 Apache 서버보다 프로세서 주기당 더 많은 것을 달성할 수 있도록 합니다. 이것은 설정의 유연성이 낮음에도 불구하고입니다.
어떤 경우에는 특히 공유 호스트를 사용하는 경우 Apache와 Nginx 중 하나를 선택하지 못할 수 있습니다. 그러나 그렇게 할 경우 선택은 전문 지식, 목표 및 요구 사항에 따라 달라집니다.
요약
서버 소프트웨어 선택은 중요하며 원하는 대로 무수히 많은 옵션이 있습니다. 실제로는 왼쪽 필드에서 서버 유형을 선택하지 않을 것입니다. 대신 두세 가지 유형 중에서 선택하는 경우가 많습니다. Apache와 Nginx는 모두 뛰어난 장기 성능 및 안정성을 제공하기 때문에 자주 고려되는 비교입니다.
이 기사에서는 Apache와 Nginx가 이 두 가지 측면에서 어떻게 비교되는지 살펴보았습니다. 자세히 살펴봐야 할 기술적인 고려 사항이 많이 있으며 이는 커뮤니티에서 특정 서버 소프트웨어의 인기도보다 선택에 더 큰 영향을 미칩니다.
Apache와 Nginx에 대한 의견이 있습니까? 아래 의견 섹션에서 의견을 공유하십시오!