NGINX를 사용하여 마 젠토를 제공하는 것을 고려할 때 구현 세부 사항에 대해 걱정하지 않지만 누군가가 그것에 대해 좋은 (또는 나쁜) 말을하고 있는지 알고 싶습니다. 또한 마젠 토의로드 밸런싱을 위해 NGINX를 사용하는 것이 중요합니다.
NGINX를 사용하여 마 젠토를 제공하는 것을 고려할 때 구현 세부 사항에 대해 걱정하지 않지만 누군가가 그것에 대해 좋은 (또는 나쁜) 말을하고 있는지 알고 싶습니다. 또한 마젠 토의로드 밸런싱을 위해 NGINX를 사용하는 것이 중요합니다.
답변:
Nginx는 Magento를 호스팅하기에 확실히 좋은 선택이며 사이트 성능을 향상시키는 데 도움이되는 몇 가지 멋진 (그러나 작은) 이점이 있습니다.
Nginx와 Apache의 주요 차이점은 Nginx는 비 차단 이벤트 IO를 사용하고 Apache는 멀티 스레딩 / 프로세싱 만 사용한다는 것입니다. 차이점은 무엇이며 왜 중요합니까? 아파치의 경우, 5 개의 스레드가 있다고 말하면 주어진 시간에 5 개의 요청을 처리 할 수 있습니다. 이러한 스레드 중 하나를 완료하는 데 시간이 오래 걸리면 추가 수신 요청을 처리하기 위해 4 개의 스레드 만 남습니다. 5 개의 스레드가 모두 잠기면 완료 될 때까지 들어오는 요청을 처리 할 수 없습니다.
스레드가 무언가에 대한 요청을 수신 할 때 Evented IO를 사용하면 이벤트가 발생하고 다음 요청으로 바로 이동합니다. 이벤트가 콜백하면 응답을 관련 클라이언트로 전달합니다.
이것은 비동기 자바 스크립트의 작동 방식과 대략 비슷합니다. AJAX 요청을 시작하고 콜백을받을 때까지 계속 진행합니다.
이 현대적인 접근 방식은 많은 스레드 또는 작업자 시스템 프로세스의 오버 헤드없이 많은 작은 정적 파일을 제공하는 데 적합합니다.
Nginx의 또 다른 장점은 적은 메모리 공간입니다. 아파치는 많은 것들을 지원하며, 그렇게 할 때 높은 메모리와 계산 공간을 갖습니다. 다시 되돌릴 수는 있지만 Nginx는 처음부터 메모리 측면에서 희박하도록 설계되었습니다.
차이점은 크지 않지만 수천 건의 요청까지 확장하면 이러한 작은 차이가 전체적으로 큰 차이를 만듭니다.
이제 Magento 애플리케이션에서 가장 큰 성능 병목 현상은 PHP 코드 실행이라는 것을 기억해야합니다. 여기에 Apache와 Nginx의 성능에는 기본적으로 무시할만한 차이가 있습니다. 중요한 것은 PHP-FPM과 작업자 MPM을 Apache와 함께 사용하는 것입니다 (prefork / mod-php는 피하십시오). 가장 큰 이유는 PHP 코드를 실행해야 할 때 PHP 인터프리터 만 호출하고 APC와 같은 op-code 캐싱 소프트웨어를 효과적으로 사용할 수 있기 때문입니다 (이것이 얻을 수있는 가장 큰 성능 향상입니다).
마지막 요점 : 일부 모듈 / 애플리케이션은 Apache가 사용될 것으로 예상하며 ModRewrite 또는 .htaccess 파일 사용에 대한 설명서가 제공 될 수 있습니다. Nginx에는 ModRewrite 스타일이 지원되지만 디렉토리 별 .htaccess 스타일 솔루션은 지원되지 않습니다.
개인적으로 정적 콘텐츠를 효율적으로 제공하기 때문에 Nginx를 좋아합니다. PHP-FPM을 설정하는 것이 매우 쉽고 구성 구문이 매우 좋습니다. 성능 문제에 대한 마법의 해결책은 아니지만 강력하고 유연한 옵션입니다.
Magento를 사용할 때 Nginx의 성능 이점은 무시할 만하다고 말합니다. Aaron이 언급 한 이벤트 기반 IO의 이점은 Apache (이벤트 MPM 사용시)에도 적용됩니다.
일반적으로 Magento에 대해 말하면 대부분의 처리 (99 %)는 PHP와 데이터베이스에서 발생하므로 처음 1 %를 최적화하면 상대적으로 적은 이점을 얻을 수 있습니다.
그러나 Magento를 위해 Nginx를 선택해야하는 다른 이유는 적은 메모리 풋 프린트, 더 나은 속도 제한 및 SPDY 지원과 같은 것입니다.
많은 .htaccess 문은 Nginx 문에 직접 매핑되지 않기 때문에 Apache에서 실행중인 기존 Magento 사이트를 변환 할 때 Nginx에 큰 단점이 있습니다. 예를 들어 Nginx는 ACL에서 호스트 이름을 지원하지 않습니다.