Nginx 대 Apache: 최고의 웹 서버는 무엇입니까?

게시 됨: 2021-12-30

다양한 유형의 서버 소프트웨어가 있지만 종종 경쟁자를 Nginx 대 Apache로 좁힐 것입니다. 이는 둘 다 다양한 서버 구성에 대해 최고의 성능을 제공하고 특정 응용 프로그램에 더 적합하기 때문입니다.

그럼에도 불구하고 이들 중 어느 것이 귀하의 필요에 더 적합한지 여전히 고려하고 싶을 것입니다. 운영 체제(OS) 지원, 보안, 문서 및 (물론) 성능과 같이 조사해야 할 몇 가지 다른 범주가 있습니다.

이 게시물에서는 다양한 영역에서 Nginx와 Apache를 비교할 것입니다. 마지막으로 조사 결과를 요약하고 올바른 옵션을 선택하는 데 필요한 정보를 제공합니다.

Nginx와 Apache 소개

각 서버 유형에 대해 자세히 알아보기 전에 Nginx와 Apache에 대한 개요를 제공하겠습니다. 다음 섹션으로 이동하면 둘 다의 사용 사례 중 일부와 '야생에서' 볼 수 있는 위치에 대해 알게 될 것입니다.

#Nginx vs #Apache: 당신에게 적합한 웹 서버는 무엇입니까?
트윗하려면 클릭

엔진엑스

Nginx 로고.

Apache와 비교할 때 Nginx( "엔진 X"로 발음 )는 서버 측 기술의 세계에 비교적 초보자입니다. 그러나 개발팀은 Apache 시스템의 한계를 확장하는 작업을 맡았습니다.

많은 사용자들이 안정성과 확장성을 고려하는 오픈 소스 솔루션입니다. 이것은 (부분적으로) 이벤트 중심 아키텍처에 달려 있습니다. 자세한 내용은 나중에 설명합니다. 사실, 초기 Nginx 릴리스의 목표 중 일부는 한 번에 10,000개의 연결을 처리할 수 있도록 하는 것이었습니다. 이것은 2004년 당시 웹의 급속한 확장으로 인해 필요했던 것입니다.

전체적으로 Nginx와 같은 시스템 관리자 및 사이트 소유자는 성능이 좋고 정적 파일과 잘 작동하며 로드 밸런서 및 '역 프록시'의 기능을 수행합니다. 이들은 모두 가동 시간, 속도 및 보안과 관련이 있습니다.

아파치

Apache HTTPS 서버 로고.

Apache는 웹 서버 기술의 '오래된 사람'입니다. 그것은 웹 자체만큼이나 오래되었습니다. 1995년부터 Apache는 수백만 대는 아니더라도 수천 대의 서버의 핵심 소프트웨어였습니다.

오랫동안 Apache는 'sysadmins' 사이에서 지배적인 기술이었습니다. 여기에는 여러 가지 이유가 있습니다. 일부는 성과와 관련이 있고 다른 일부는 습관 때문입니다. 그럼에도 불구하고 Apache 서버는 구성이 중요한 곳에서 많이 사용됩니다.

Apache는 모든 Linux 배포판에 사전 설치된 소프트웨어로 제공되므로 해당 OS에 적합한 솔루션입니다. 그러나 Nginx와 다른 아키텍처를 사용하지만 여전히 강력한 성능, 확장성 및 환상적인 문서를 제공합니다.

많은 시스템 관리자는 Apache의 사용자 정의 가능한 특성과 다양한 모듈을 로드하여 자신의 서버를 만드는 방법을 좋아합니다.

Nginx 대 Apache의 일반적인 사용 사례

Apache는 웹사이트를 제공할 때 "모든 거래의 잭"이라고 말할 수 있습니다. 그러나 이것은 혼합된 축복입니다. 예, Apache 서버는 Nginx가 할 수 있는 거의 모든 작업을 수행할 수 있지만 성능이 낮은 코드를 희생해야 합니다. 여기서 나이가 요인입니다.

Apache는 웹 서버를 위한 고급 응용 프로그램이 있기 이전에 도착했기 때문에 코드베이스는 최신 웹 사이트를 제공하는 데 필요한 작업을 수행할 수 없었습니다. 이러한 문제가 현재 우려의 원인은 아니지만 Nginx와 같은 솔루션은 최신 웹을 염두에 두고 작동합니다.

따라서 Apache는 공유 호스팅과 같은 애플리케이션을 위한 구성하기 쉬운 서버로서 환상적이라는 것을 알게 될 것입니다. 통합은 또한 Linux, Apache, MySQL 및 PHP(LAMP) 스택의 일부로 로컬 개발 서버 소프트웨어로 사용되는 것으로 봅니다.

LAMP 스택의 모든 부분에 대한 로고: Linux, Apache, MySQL 및 PHP.

대조적으로, Nginx는 Apache에 비해 훨씬 더 간소화된 더 성숙한 소프트웨어 기반을 가지고 있습니다. 안정성과 보안이 핵심적인 기본 요소인 경우에 좋습니다. Nginx 서버는 다른 유형만큼 구성할 수 없으며 이는 코어에 더 적게 액세스할 수 있음을 의미합니다.

게다가 Apache와 같은 방식으로 모듈화되어 있지 않기 때문에 서버 사용자 지정을 수행해야 하는 상황에는 적합하지 않습니다.

Nginx 대 Apache: 각 서버 유형의 인기도

오랫동안 서버 소프트웨어는 한 마리의 말 경주와 비슷했습니다. Apache는 수년간 지배적인 세력으로 운영되었으며 여전히 엄청난 시장 점유율을 유지하고 있습니다. 이 때문에 최고의 문서와 함께 Apache 서버에 대한 많은 통합 및 지원이 있음을 알게 될 것입니다.

이것은 Apache를 선택하는 또 다른 이유가 되며 지속적인 사용에 기여합니다. 그러나 Nginx는 자체 시장 점유율이 매우 높은 서버 소프트웨어입니다. 시간이 지남에 따라 Nginx 사용량이 천천히 증가하여 현재 시장에서 가장 지배적인 웹 서버 기술이기는 하지만 그다지 많지는 않습니다.

Nginx는 시스템 관리자가 웹 서버에서 필요로 하는 많은 것을 제공하기 때문에 앞으로 Apache는 시간이 지남에 따라 사용이 줄어들 것이라고 제안합니다. 그러나 LiteSpeed ​​Web Server 및 Cloudflare Server는 곧 출시될 예정이며 사용자 기반이 증가하고 지원이 강력합니다. 몇 년 안에 이 비교는 Nginx를 이 젊은 신생 기업 중 하나와 비교할 수 있습니다.

Nginx 대 Apache: 기능의 기술적 분석

다음 몇 섹션에서는 Nginx 대 Apache의 여러 기술적 측면을 다룹니다. 모든 것을 다룰 수는 없지만 주요 영역에 충분한 시간을 드리겠습니다. 어쨌든 이들은 두 서버 유형의 핵심 요소를 나타내기 때문에 적합한 소프트웨어를 선택할 때 계속할 수 있을 것입니다.

1. 연결 및 요청 처리

서버가 연결을 처리하는 방법은 이것이 '핵심 통화'이기 때문에 알아야 합니다. 논쟁의 여지가 있지만 사람들이 Nginx와 Apache의 상대적 장점에 대해 논의할 때 연결 처리가 인식에 큰 역할을 합니다.

엔진엑스

Nginx는 '비동기' 및 '이벤트 기반'입니다. 즉, 한 번에 여러 요청을 처리하고 사용 가능한 리소스가 있는 동안 처리할 수 있습니다. 들어오는 연결을 처리하기 위해 '작업자 프로세스'를 생성하며 그 중 한 번에 수천 개가 필요합니다. 이들은 나머지 서버에 대한 '물 운반자'입니다.

예를 들어, 각 작업자 프로세스는 프로세스 이벤트 및 연결을 수신 대기하고 연속 루프에 추가합니다. 거기에서 서버는 각 이벤트를 처리하고 완료되면 제거할 수 있습니다. Nginx 서버의 흐름은 고유한 확장성을 제공하며 비동기식 비차단 아키텍처도 이를 제공합니다.

아파치

대조적으로 Apache는 여러 MPM(다중 처리 모듈)을 통해 한 번에 하나씩 이벤트를 처리합니다. 시스템 관리자는 작업에 가장 적합한 연결 아키텍처를 선택하며 그 중 몇 가지가 있습니다.

mpm_prefork 모듈은 일반적인 모듈입니다. 이것은 각 이벤트에 대한 자식 프로세스를 생성하고 한 번에 하나의 연결만 처리합니다. 프로세스 수가 요청 수보다 많으면 성능과 관련하여 Nginx와 Apache의 차이점을 구별하기 어려울 것입니다.

그러나 이러한 유형의 상황은 드물며 Apache 서버는 많은 경우에 프로세스보다 많은 수의 요청을 보게 됩니다. 게다가 이 MPM은 메모리 사용량으로 인해 잘 확장되지 않습니다.

PHP로 작업하는 사람들에게 mpm_preforkmod_php 인터프리터 모듈로 작업하는 유일한 안전한 방법입니다. 단점에도 불구하고 이것은 WordPress 개발자가 Apache 서버에 배포해야 하는 경우 선택할 MPM이 될 것입니다.

mpm_workermpm_event 모듈도 볼 수 있습니다. 이들은 스레드 컬렉션당 여러 프로세스를 생성할 수 있는 방식으로 인해 유사한 작업을 수행하고 더 잘 확장됩니다.

이 MPM 배치는 경우에 따라 성능상의 단점이 있음에도 불구하고 Apache가 얼마나 유연할 수 있는지 보여줍니다.

정적 및 동적 콘텐츠에 대한 요청 처리

계속 진행하기 전에 각 서버 소프트웨어에 대한 정적 콘텐츠와 동적 콘텐츠에 대해 언급해야 합니다. Nginx는 동적 콘텐츠를 처리할 수 없으므로 우려할 만한 사항이 될 수 있습니다. 사실 Nginx는 이러한 유형의 콘텐츠를 기본 방식으로 처리하지 않습니다. 대신 외부 프로세서(예: 캐시)로 보낸 다음 콘텐츠를 이동하기 전에 반환될 때까지 기다립니다.

개발을 위해 시스템 관리자는 이를 위해 Memcached와 같은 솔루션을 설정할 것입니다. 이 접근 방식에는 성능 측면에서 부정적인 점이 있습니다. 그러나 체인의 각 부분에 대한 성능 오버헤드의 이점은 이를 무효화합니다. Nginx는 이러한 요청 처리에 대해 걱정할 필요가 없으므로 보다 효율적으로 책임 영역에 집중할 수 있습니다.

Apache의 MPM 시스템을 사용하면 다른 모듈 없이 정적 및 동적 콘텐츠를 모두 처리할 수 있습니다. 동적 콘텐츠의 경우 Apache는 각 작업자에 언어 프로세서를 포함합니다. 이것은 잘 작동하는 간단한 접근 방식입니다. 변경해야 하는 경우 모듈을 교체할 수도 있습니다.

2. 서버 구성

Nginx와 Apache의 더 분명한 차이점 중 하나는 각 서버를 구성하는 방법입니다. Nginx는 중앙 집중식 접근 방식을 사용하므로 사용자가 하나의 기본 파일 외부에서 서버를 구성할 수 있는 방법이 없습니다. 이것이 부정적인 것처럼 보이지만 많은 이점이 있습니다.

  • 서버 관리자는 전체 서버에 대한 액세스를 강화하는 글로벌 보안을 담당합니다.
  • 중앙 집중식 서버는 다른 유형보다 성능이 뛰어납니다. 이는 Nginx가 각 디렉토리의 구성 파일을 확인하기 위한 요청을 처리할 필요가 없기 때문입니다.
  • 여러 영역의 서버에 대한 재정의가 없으므로 여기에 노크온 효과가 있어 요청 시간을 더욱 단축할 수 있습니다.

평신도가 Apache 서버를 사용한다는 것을 알 수 있는 한 가지 방법은 .htaccess 파일이 있다는 것입니다. 이것은 서버의 거의 모든 위치에 추가할 수 있는 구성 파일입니다. Apache는 요청이 있을 때 .htaccess 파일에 대한 경로의 각 요소를 확인합니다.

일부 재작성 규칙을 보여주는 .htaccess 파일 - Nginx 대 Apache 비교

이것은 서버의 자신의 부분을 개인화하고 싶지만 지시 중 하나가 성능이나 보안 문제를 일으키는 경우 재앙을 초래할 수 있는 사용자에게 환상적입니다. 이 분산 접근 방식은 공유 호스팅에서 Apache가 사용되는 이유 중 하나입니다. WordPress와 같은 콘텐츠 관리 시스템(CMS)이 Apache 서버에서 좋은 성능을 제공하는 이유이기도 합니다.

3. 통역 요청

명백해 보이지 않는 Nginx와 Apache의 한 가지 주요 차이점은 요청을 해석하는 방법입니다. 간단히 말해서:

  • Nginx는 각 구성 요소에 대해 URI(Uniform Resource Identifier)를 사용하여 요청을 해석하고 매핑합니다.
  • Apache는 URI를 사용하여 요청을 해석할 수도 있지만 파일 기반 경로 구조를 보는 것이 더 일반적입니다.

Apache는 무엇보다도 웹 서버이기 때문에 <Directory> , <Files> 또는 <Location> 블록을 사용하여 리소스를 정의합니다. 여기서 핵심 개념은 Apache가 '보는' 모든 것이 웹 서버와 관련되어 있으므로 리소스 경로 내에 모호함이 없다는 것입니다. 문서 트리를 생각하면 이것이 Apache가 서버 파일 시스템을 '시각화'하는 방법입니다.

특정 디렉토리에 대한 파일 시스템 보호를 보여주는 Apache 구성 파일 - Nginx와 Apache 비교

그에 반해 Nginx는 로드밸런서, 프록시 서버, 웹서버 등 사용 사례가 많습니다. 이 때문에 요청은 Nginx가 처리할 수 있도록 URI로 제공되어야 합니다. 예를 들어 Nginx는 serverlocation 블록을 사용합니다. 전자는 요청된 호스트를 해석하고 후자는 나중에 URI 부분과 일치합니다. 전체 요청이 URI가 됩니다.

Nginx 구성 파일 - Nginx 대 Apache 비교

전체적으로 URI는 Nginx에 대해 더 유연합니다. 수행하는 모든 기능에 적응할 수 있기 때문입니다. 그럼에도 불구하고 Apache의 시스템은 웹 서버로서의 역할만 수행하면 된다는 점에서 작동합니다.

Nginx 대 Apache: 2022년 서버용으로 선택해야 하는 것

어떤 서버 소프트웨어를 선택해야 합니까? 에 대한 포괄적인 답변입니다. 간단합니다. 호스팅 제공업체가 제공하는 것입니다. 많은 경우에 선택의 여지가 없습니다. 많은 웹 호스트가 Nginx와 Apache 사이에서 결정하려는 경우 일치해야 하는 동일한 패턴을 따릅니다.

  • 지속적인 구성이 필요한 서버를 실행하거나 사용자에게 구성 선택권을 주고 싶다면 Apache가 적합합니다.
  • 그러나 슈퍼 성능, 견고한 보안을 제공하고 사용자가 아닌 구성을 처리하려는 경우 Nginx가 더 나은 방법입니다.

성능과 관련하여 Apache는 고유한 아키텍처로 인해 더 많은 메모리를 차지할 있습니다. Nginx는 트래픽이 많은 상황, 특히 많은 정적 콘텐츠를 처리해야 하는 경우에 더 좋습니다.

따라서 캐싱에 의존하여 콘텐츠를 저장하고 제공하는 경우 Nginx가 최선의 선택이 될 수 있습니다. 그러나 Nginx는 동적 콘텐츠를 제공할 수 없으므로 서버에서 사용하는 프록시의 효율성에 따라 더 많은 성능 저하를 겪게 됩니다.

맨 위로 이동

결론

거의 압도적 인 선택을 제공하는 WordPress (및 웹 사이트 실행) 영역이 많이 있습니다. 이것이 짐승의 본성입니다. 그러나 사이트를 빠르게 활성화해야 하는 경우에는 도움이 되지 않습니다.

#Nginx vs #Apache: 당신에게 적합한 웹 서버는 무엇입니까?
트윗하려면 클릭

서버 유형 선택은 추가로 주의를 기울여야 하는 중요하고 최전선 결정입니다. Nginx 대 Apache는 둘 다 특정 상황에서 이점을 제공하기 때문에 일반적인 비교입니다.

우리의 의견은 Nginx가 더 나은 성능으로 대부분의 기반을 커버할 수 있으므로 대부분의 WordPress 사용자에게 더 나은 옵션이 될 수 있다는 것입니다. 이것이 인기 있는 성능 중심의 WordPress 호스트 중 많은 수가 Kinsta 및 Flywheel을 포함하여 모든 Nginx 서버 스택으로 이동한 이유입니다.

그럼에도 불구하고 호스트가 제공하는 모든 것을 선택하는 것이 안전하고 대부분의 WordPress 사이트는 웹 서버 중 하나에서 완전히 문제가 없습니다.

Nginx와 Apache 사이의 울타리에서 당신은 어디에 앉습니까? 아래 의견 섹션에서 알려주십시오!

무료 가이드

속도를 높이는 5가지 필수 팁
귀하의 WordPress 사이트

로딩 시간을 50-80%까지 단축
간단한 팁을 따르면 됩니다.

무료 가이드 다운로드