Nginx 대 Apache: 귀하에게 가장 적합한 웹 서버는 무엇입니까?

게시 됨: 2022-03-30

우리가 "engine-x"로 발음하는 Apache와 Nginx는 웹 호스팅 비즈니스의 두 가지 주요 업체입니다. 그들은 모든 웹 트래픽의 거의 절반을 차지합니다. 그들은 가장 인기 있고 널리 사용되는 오픈 소스 웹 서버입니다.

이들의 공통 목표는 다양한 워크로드를 관리하고 Windows 및 UNIX와 같은 최신 운영 체제의 요구 사항을 충족하는 것입니다.

Apache는 잘 알려진 웹 서버 회사이지만 Nginx는 멈출 수 없을 정도로 많은 웹 사이트를 관리하고 있습니다. 두 웹 서버 모두 교체할 수는 없지만 각각 장단점이 있습니다.

Apache 대 Nginx 요약

Apache와 Nginx는 모두 최신 웹 요구 사항을 충족하기 위해 다양한 워크로드를 처리할 수 있는 오픈 소스 웹 서버입니다. 개념적으로 비슷합니다. 그들은 또한 웹 서버 산업에서 가까운 경쟁자입니다.

Apache는 20년 넘게 웹 서버 생태계의 리더였습니다. Nginx는 장점이 있지만 여전히 인기 있는 선택입니다. Nginx는 웹 앱과 웹사이트의 미래입니다.

아파치란?

"Apache"라고도 알려진 Apache HTTP Server는 고성능의 빠른 오픈 소스 웹 서버 소프트웨어입니다. Apache Software Foundation이 후원하는 개발자가 개발했습니다.

현재 HTTP 표준에 따라 안전하고 강력하며 상용 등급의 ​​웹 서버를 구축하는 것을 목표로 하는 협업 웹 서버 프로젝트입니다.

이 프로젝트는 인터넷을 통해 HTTP 웹 서버와 관련 문서를 만들기 위해 전 세계의 자원 봉사자 그룹이 공동으로 노력한 것입니다. Apache는 1995년부터 웹 서버 시장의 선두 주자였습니다. 2009년에는 1억 개의 웹사이트에 도달했습니다.

Apache는 전원 호환성, 다중 플랫폼 지원 및 사용 용이성으로 인해 여전히 서버 관리자가 선호하는 선택입니다. Apache는 Linux 또는 Windows 에서 사용할 수 있습니다 . 단순성과 유연성으로 인해 Apache는 관리자가 선호하는 선택이 되었습니다.

새로운 기술을 발명하고 시도하려는 초기의 갈증이 있었습니다. Apache는 World Wide Web의 중추였습니다. 그게 다야 정상에 올랐을 때 내려가는 길은 오직 하나뿐이라는 옛말 .

Nginx는 무엇입니까?

한 사람의 손실은 다른 사람의 이익입니다. 이것이 바로 일어난 일입니다. Apache의 잠재적인 라이벌인 Nginx는 Apache의 강력한 지위를 잠식했습니다. 전 세계적으로 인정받는 초기 경쟁자 중 하나인 Nginx는 현대적인 웹 요구 사항을 처리할 수 있는 견고한 웹 서버 플랫폼입니다.

간단히 말해서, 러시아 개발자인 Nginx는 메일 프록시, 일반 TCP/UDP 프록시 또는 역방향 프록시로 편리하게 사용할 수 있는 오픈 소스 무료 HTTP 서버입니다. 제한된 리소스로 많은 수의 동시 사용자에게 효율적으로 서비스를 제공하도록 설계되었습니다. Nginx는 대규모 웹 트래픽을 처리하기 어려웠던 시기에 탄생했습니다.

Nginx는 여러 면에서 Apache와 경쟁할 수 없지만 Nginx의 비동기 상태는 Apache보다 매력적인 선택입니다.

또한 단일 스레드 아키텍처를 사용하므로 Apache보다 더 지능적인 선택입니다. 관리자는 Nginx의 가벼운 아키텍처, 리소스 효율성 및 높은 동시성을 좋아합니다. 웹 서버의 아키텍처를 향상시키기 위해 독립형 HTTP 서버로도 사용할 수 있습니다.

최소한의 하드웨어 리소스로 정적 트래픽을 효율적이고 빠르게 처리하는 능력은 타의 추종을 불허합니다. Nginx는 또한 갑작스러운 트래픽 급증 및 기타 보안 취약성으로부터 Apache 서버를 보호하는 충격 흡수 장치 역할을 할 수 있습니다.

Nginx는 제한된 하드웨어 리소스를 사용하여 여러 요청을 처리하는 기능을 희생하지 않으면서 모든 기본 HTTP 서버 기능을 제공합니다.

NGINX와 Apache의 자세한 비교

간단

Apache는 애플리케이션 개발을 더 쉽게 만듭니다. 프로세스 모델별 연결을 사용하기 때문에 웹 서비스 로직의 어떤 부분에 모듈을 추가하는 것이 쉽습니다. 한 프로세스가 실패하면 다른 모든 작업은 영향을 받지 않습니다.

Nginx는 Apache와 달리 애플리케이션 개발을 상당히 어렵게 만드는 복잡한 아키텍처를 가지고 있습니다.

이를 위해서는 이벤트 기반 아키텍처와 적절한 상호 작용을 달성하기 위해 버그 없이 효율적인 코드를 생성하는 방법에 대한 심층적인 이해가 필요합니다.

연결 처리

Apache Web Server와 Nginx의 주요 차이점 중 하나는 연결 및 트래픽을 처리하는 기능입니다.

Apache의 개발 팀은 다중 연결 처리와 관련된 문제를 잘 알고 있었습니다.

이벤트를 지속적으로 검색하고 처리하기 위해 빠른 루프 기능이 생성되었습니다. 모든 작업자는 이벤트가 활성화되면 연결할 수 있습니다.

이러한 유형의 연결 처리를 통해 제한된 리소스가 주어지면 Nginx를 훨씬 더 확장할 수 있습니다. 과부하 상태에서도 CPU 및 메모리 사용률은 비교적 일정하게 유지됩니다.

Apache 요청 처리 방법은 다음 모듈(MPM(다중 처리 모듈)이라고도 함) 중 하나로 구성할 수 있습니다.

  1. 작업자 모델: 이 기능의 장점은 정해진 수의 스레드와 리스너 스레드를 생성하는 자식 프로세스를 생성한다는 것입니다. 리스너 스레드는 연결을 수신하고 처리를 위해 스레드로 전달합니다.
  2. 프로세스 모델: 이것은 오래된 방법입니다. 느리고 높은 부하에서 연결을 거부할 수 있습니다. 소규모 사이트에서는 이를 인식하지 못할 수 있지만 더 큰 사이트에서는 알 수 있습니다.
  3. 이벤트 모델: 작업자 모델과 마찬가지로 청취자 스레드를 생성하여 작업자 스레드에 전달합니다.

Nginx 작업자는 수천 개의 HTTP 클라이언트 연결을 동시에 지원할 수 있습니다. NGINX는 경량 아키텍처, 고성능 및 확장성으로 인해 높이 평가되는 구현입니다.

동적 콘텐츠

동적 콘텐츠는 동일한 벤치마크를 사용하여 테스트되었습니다. 정확히 같은 속도를 보여주었습니다. 이는 모든 요청이 두 서버 모두 동일한 PHP 런타임 환경에서 처리되기 때문입니다.

정적 콘텐츠

Nginx는 Apache보다 빠릅니다. 최대 1000개의 연결을 실행하여 테스트했습니다. 벤치마크 테스트는 Nginx가 Apache보다 2.5배 더 빠르게 수행하고 더 적은 메모리를 사용하는 것으로 나타났습니다.

Nginx는 동시 정적 콘텐츠 처리를 위한 최상의 선택입니다.

운영 체제 지원

Apache는 Windows, Linux 및 UNIX를 포함한 모든 운영 체제에서 사용할 수 있습니다. NGINX는 UNIX 플랫폼에서 안정적이며 Windows에서도 지원됩니다.

캐싱

캐싱은 매우 간단한 용어로 방문자가 콘텐츠를 방문하기 전에 콘텐츠를 준비하는 행위입니다. 즉, 콘텐츠를 검색하지 않고 요청할 수 있습니다. 그것은 그들을 위해 준비되었으며 가능한 한 빨리 그것을 받게 될 것입니다.

Apache는 성능을 향상시키기 위해 세 가지 유형의 캐싱을 제공합니다.

  • 파일 캐싱은 시작 시 파일을 미리 로드할 수 있는 특수 서비스로, 액세스 시간을 늘리고 필요할 때 파일 검색 속도를 높입니다.
  • 두 가지 상태 – 개체 캐싱과 가치를 공유합니다.
  • RFC266 3단계 캐싱을 통한 스마트 캐싱 - 로컬에 저장된 동적 콘텐츠에 대한 스마트 캐싱을 허용합니다.

Nginx는 동적 콘텐츠를 캐시하여 로드 속도를 높이고 서버 로드를 줄입니다.

다음은 Nginx가 데이터를 캐시하는 데 사용하는 두 가지 지시문입니다.

  • Proxy_cache: 캐시를 활성화합니다.
  • Procy_cache_path는 캐시 경로, 구성을 설정합니다.

Nginx에는 서버가 다운된 경우에도 캐시된 웹 콘텐츠를 표시할 수 있는 기능이 있습니다.

특정 상황에서는 캐싱을 권장하지 않습니다.

파일 대 URI 기반 해석

Apache는 Directory 블록과 FileE 블록을 사용하여 파일 시스템 리소스 요청을 해석합니다. 서버는 포트 번호와 호스트를 따라 파일을 찾으려고 시도합니다.

Apache는 일치하는 항목이 발견되지 않을 때 요청을 이행할 대체 방법을 찾기 위해 파일 시스템을 검색합니다.

  • 별칭: URL을 파일 시스템 위치에 매핑합니다. DocRoot 이외의 문서를 저장할 수 있습니다 .
  • 리디렉션: 다음과 같은 방식으로 작동합니다. 서버는 이전 URL을 새 URL에 매핑하고 클라이언트가 다른 위치에서 리소스를 가져올 수 있도록 리디렉션합니다.
  • 위치: 블록을 사용하여 URL 작업이 가능합니다.

반면에 NGINX는 서버가 프록시 역할을 할 수 있도록 하므로 주로 URI를 처리합니다. 구성 블록은 주로 서버 및 위치 블록에서 사용됩니다.

  • 서버 블록: 구성 파일 하위 집합은 요청을 처리할 가상 서버를 식별합니다. 서버 관리자는 특정 유형의 연결을 처리하도록 가상 서버를 구성할 수 있도록 다른 도메인 및 포트에 블록을 할당할 수 있습니다.
  • 위치 블록: 다양한 리소스 및 URL에 대한 요청을 처리하는 서버 블록입니다. 파일 시스템 내의 올바른 파일 위치로 요청을 라우팅합니다.

유연성

Apache는 쉽게 사용자 정의할 수 있도록 꽤 오랫동안 동적 모듈을 로드했습니다. Nginx에 구축된 소프트웨어 모듈인 Nginx Plus는 로드 밸런서, 웹 서버 및 콘텐츠 캐시 역할을 합니다. 그 외에도 이 모듈에서 추가 소프트웨어 모듈을 실행할 수 있습니다.

두 웹 서버 모두 핵심 운영 기능을 지원합니다.

보안

두 서버 모두 안전한 것으로 간주되며 문제는 잘못된 구성에서만 발생할 수 있습니다. 이것은 편지에서 따라야 하는 핵심 사항입니다.

아파치의 경우

  • .htaccess 재정의 로부터 시스템을 보호하기 위해 서버 구성 파일 을 구성하십시오.
  • ServerRoot 디렉토리에 대한 권한 수정
  • DoS 공격을 피하려면 구성을 조정하십시오.
  • 항상 서버를 최신 상태로 유지하십시오.
  • 카운터 체크 CGI 스크립트.
  • 올바른 서버 측 포함이 있는지 확인하십시오.
  • 로그를 주시하세요.

Nginx의 경우:

  • 보안 헤더가 포함되어야 합니다.
  • Nginx 버전을 숨기려면 server_tokens 지시문을 비활성화 하십시오.
  • 공격자의 취약성 악용을 줄이려면 원치 않는 모듈을 비활성화하십시오.
  • 불필요하거나 불필요한 HTTP 메소드는 비활성화되어야 합니다.
  • 서버를 최신 버전으로 업그레이드합니다.
  • DoS 공격을 피하려면 리소스를 비활성화하십시오.

지원 및 문서

Apache HTTP 서버 메일링 리스트는 커뮤니티 지원을 제공합니다. Stack Overflow 또는 IRC 채널을 통해 지원을 받을 수도 있습니다. 타사 채널도 Apache 상용 지원을 제공하지만 공식 목록을 유지 관리하지는 않습니다.

NGINX는 IRC, 메일링 리스트 및 스택 오버플로를 지원합니다. 상용 제품인 NGINX Plus는 로드 밸런싱 및 서버 모니터링과 같은 추가 기능을 제공합니다.

두 서버 모두 놀라운 문서를 제공합니다. NGINX Wiki는 Nginx에서 사용할 수 있습니다. Apache는 일반적으로 더 오래 사용되었기 때문에 외부 당사자로부터 더 많은 지원을 받습니다.

Apache VS NGINX 서버: 장단점

웹사이트를 호스팅하기 전에 웹사이트의 요구 사항과 호환되는 웹 서버를 선택해야 합니다. 각 서버의 장단점을 소중히 여기는 것이 중요합니다. 이 섹션에서는 동일한 내용에 대해 설명합니다.

아파치 웹 서버

Apache는 확실히 Nginx보다 훨씬 오래되었으며 많은 웹마스터가 선호하는 선택입니다. Windows, Unix 및 Linux를 포함한 다양한 운영 체제에서 작동합니다.

아파치의 장점

  • 제공합니다. htaccess는 시스템 전체의 시스템 전체 설정을 재정의하기 위해 디렉토리별로 사용할 수 있습니다.
  • 추가 보안을 제공하는 mod_security 및 mod_evasive 모듈을 포함합니다.
  • 동적으로 모듈 로드 및 언로드
  • 프로세스당 하나의 연결 모델을 사용합니다.
  • 우수한 지원 및 문서.
  • 동적 콘텐츠 제공을 위한 고성능

아파치의 장점

  • 트래픽이 많은 웹 사이트에는 성능 문제가 있을 수 있습니다.
  • Nginx와 비교할 때 정적 콘텐츠는 느리게 표시됩니다.
  • 여러 요청을 동시에 처리할 수 없습니다.
  • 세부적으로 구성 및 관리할 수 있습니다. 초보자에게는 권장하지 않습니다.

Nginx 웹서버

가볍고 빠르고 간단한 웹 서버 Nginx를 사용할 수 있습니다. 트래픽이 많은 웹 사이트를 위해 특별히 설계되었습니다.

Nginx의 장점

  • DDoS 공격으로부터 보호하기 위한 선택적 구성입니다.
  • 다중 프로세서 환경에서 훌륭하게 작동합니다.
  • 정적 콘텐츠를 최적화하고 제공하는 데 사용할 수 있는 옵션이 많이 있습니다. Apache보다 2.5배 더 빠르게 정적 콘텐츠를 제공할 수 있고 메모리를 덜 차지합니다.
  • 비차단, 이벤트 중심 아키텍처는 더 적은 메모리와 CPU를 필요로 합니다.

Nginx의 단점

  • NGINX는 Apache의 .htaccess 파일을 지원하지 않습니다.
  • 로그 모니터링 도구 부족 – 수동으로 탐색해야 하는 파일에 로그를 씁니다.
  • 더 적은 수의 모듈을 사용할 수 있습니다.
  • 동적 콘텐츠는 기본적으로 처리할 수 없습니다.
  • Linux 및 Unix 운영 체제 지원 – Windows 지원은 제한적입니다.

모든 서버를 사용해야 하는 경우

Apache와 Nginx 모두 강력하고 유연하며 우수한 웹 서버를 가지고 있음을 알 수 있습니다. Apache는 동적 콘텐츠에 가장 적합한 선택이며 Nginx는 트래픽이 많은 웹 사이트의 정적 콘텐츠 및 미디어 스트림에 가장 적합합니다. 결론은 이렇습니다.

Nginx 사용

  • 전용 호스팅 또는 VPS 를 사용하는 경우 .
  • 들어오는 트래픽을 관리한 다음 업스트림 서버에 배포할 수 있습니다.
  • 당신은 매우 인기 있는 웹사이트를 관리하고 많은 정적 자료를 가지고 있습니다.

아파치 사용

  • 공유 호스팅 을 사용하는 경우 .
  • 웹 개발자는 구성하기 쉽기 때문에 Apache를 자주 사용합니다.
  • 지원 커뮤니티와 해당 커뮤니티가 제공하는 풍부한 리소스에 감사할 것입니다.

함께 작업하기: Nginx와 Apache를 모두 사용해야 하는 경우

이제 Apache 또는 NGINX의 장단점을 알게 되었습니다. 두 서버는 많은 경우에 함께 잘 작동합니다.

NGINX는 전통적으로 역 프록시 역할을 하기 위해 Apache보다 먼저 배치되었습니다. NGINX는 여러 동시 요청 및 연결을 처리할 수 있으므로 클라이언트를 수용할 수 있습니다.

NGINX가 자체적으로 처리할 수 있는 요청과 프로세스만 정렬하도록 허용하면 과부하 문제를 피할 수 있습니다. Apache는 여전히 적은 양의 요청을 처리할 수 있습니다.

NGINX는 서버 풀과 통신하고 특정 요청을 처리하기 위해 서버를 추가할 수 있기 때문에 쉽게 확장할 수 있습니다.

결론

Apache와 NGINX의 차이점이 이제 명확해지기를 바랍니다. 귀하의 요구에 가장 적합한 것을 식별할 수도 있습니다. Apache와 NGINX는 모두 강력하고 유연하며 놀라운 성능을 제공합니다. 둘 다 서로 경쟁할 수 있습니다.

다양한 유형의 차이점이 성능, 기능 및 각 솔루션을 구현하는 시간에 상당한 영향을 미칠 수 있습니다. 확실히 웹 서버는 모든 사람의 요구 사항과 요구 사항을 모두 충족할 수 없습니다. 귀하의 필요에 맞는 것을 선택하는 것이 가장 좋습니다.