아파치 vs Nginx 것입니다.이 경우 Apache는 열린 연결이 없지만

나는 최근에 Apache와 Nginx의 차이점을 조사해 왔으며 어떤 것을 선택해야할지 혼란스러워합니다.

나는 약간의 검색을했지만 두 사람 사이에 확실한 비교는 없으며 여기 누군가가 두 사람의 차이점에 대한 견해를 줄 수 있는지 궁금합니다.

내 현재의 지식은 mod_php가 fastcgi보다 빠르고 안전하다는 것을 이해할 수 있지만 Apache는 동시 연결 및 메모리 소비와 관련하여 훨씬 나쁩니다.

내 사이트는 긴 폴링을 많이 사용하지만 AJAX 웹 기반이 아닙니다 (즉, 맨 위에 긴 폴링이있는 Apache).

Apaches 메모리 문제에 대한 나의 원래 해결책은 node.js를 통해 긴 폴링을 보낸 다음 node.js가 2 초마다 Apache에 액세스하도록하는 것입니다.이 경우 Apache는 열린 연결이 없지만 대신 node.js가됩니다. 나는 이것이 충분하지 않다는 것을 깨닫고 다른 해결책을 찾고 있습니다. 나는 원래의 아이디어가 효과가 있었는지 여전히 관심이 있습니다.

그렇다면 현대 웹에는 어떤 것이 더 좋습니까? 아파치 또는 Nginx?

업데이트 : 주어진 모든 제안이 좋고 유효했습니다. 나는 전체 Nginx 서버를 사용하는 원래의 두 번째 아이디어를 가지고 갔다. 나는 전용 서버이기 때문에 fastcgi로 보안 문제를 겪을 수 없다는 것에 만족하고 있으며 긴 폴링 스크립트는 PHP로 작성해야하기 때문에 높은 부하 동시 연결을 처리 할 수있는 서버가 필요합니다. 메모리가 부족한 구조를 변경합니다.

Martin F의 대답은 마크에 대한 가치가 있다고 생각되는 내 질문에 명확하고 완전한 답변을 주었으므로 표시되었습니다.하지만 세 가지 답변 모두 좋고 유효하며 내가 소유 한 다른 사이트에 리버스 프록시를 사용하는 것이 가장 확실합니다. 방금 Nginx가 프록 싱에서 할 수있는 매우 쿨한 것을 발견했기 때문에.

감사,



답변

내가 해결해야 할 오해가있는 것 같습니다.

우선, mod_php는 조금 더 빠르며, 모든 테스트에서 차이가 너무 작아서 고려할 가치가 없다는 것을 보여주었습니다. 또한 전용 서버를보고있는 것처럼 보안 측면이 귀하와 관련이 있는지 의심합니다. mod_php는 실제로 공유 환경에서만 이점이 있습니다. 실제로는 전용 환경에서 php-fpm은 PHP와 웹 서버가 다른 프로세스로 실행되므로 이점이 있습니다. PHP-의 멋진 로깅 옵션도 고려하지 않습니다. 느린 로그와 같은 fpm.

세계가 흑백이라면 순수한 nginx 설정으로 가서 php-fpm으로 PHP를 컴파일하십시오. 더 현실적으로 아파치가 이미 작동하고 있다면 nginx를 아파치의 리버스 프록시로 설정하면 몇 시간의 설정 시간을 절약 할 수 있으며 성능의 차이는 미미합니다.

그러나 세계가 1 초 동안 흑백이라고 가정하면 훨씬 더 멋진 설정이 가능하기 때문입니다. 웹 서버에는 nginx + php-fpm을 사용하십시오. 업로드를 해결하려면 업로드 모듈과 nginx의 업로드 진행률 모듈을 사용하십시오. 즉, 웹 서버는 업로드를 수락하고 파일 경로가 완료되면 PHP로 파일 경로를 전달하므로 파일은 fastcgi 프로토콜 sweet를 통해 nginx와 PHP간에 스트리밍 될 필요가 없습니다. (실시간 설정 에서이 기능을 사용하면 잘 작동합니다!)

사용자 다운로드의 경우 x-accel-redirect라는 nginxs x-send-file과 같은 기능을 사용합니다. 기본적으로 PHP에서 인증을 수행하고 nginx가 선택하고 해당 파일을 전송하기 시작하는 헤더를 설정합니다. PHP는 실행을 끝내고 웹 서버가 전송을 처리하고 있습니다. (다시 말해서, 나는 이것을 라이브 셋업에서 가지고 있으며 훌륭하게 작동합니다)

서버 또는 다른 장기 실행 작업에 파일을 배포하기 위해 PHP가 실제로 가장 적합하지 않다는 것을 알고 있으므로 다른 서버의 작업자간에 작업을 분산시킬 수있는 작업 서버 인 gearman을 설치 합니다. 언어. 따라서 배포 작업자를 만들고 100MB PHP 대신 총 200KB의 메모리를 사용하여 5 개를 생성 할 수 있습니다. 단. (나는 또한이 러닝을 라이브로 가지고 있기 때문에 실제로는 가능하다)

아직 당신이 그것을 집어 들지 않았다면, 많은 문제가 웹 서버와 전혀 관련이 없다고 생각합니다. 아파치가 구조 때문에 웹 서버와 관련되도록 강요하기 때문에 그렇게 생각합니다. 종종 PHP보다 작업을위한 도구가 훨씬 뛰어나며 PHP는이를 알고 언어를 떠나 PHP를 떠나지 않고도 작업을 오프로드 할 수있는 훌륭한 옵션을 제공하는 언어입니다.

나는 nginx를 강력히 추천하지만, 다른 문제에 대한 다른 옵션을 살펴 봐야한다고 생각합니다. 스케일링이나 성능 문제가 있으면 언제든지 저를 작성하십시오. 나는 당신이 여기를 통해 메시지를 보낼 수 있는지 모르겠지만 nginx로 태그가없는 것에 대해 서버 결함을 스토킹하지 않기 때문에 martin@bbtn.us에 저를 쓰십시오. 🙂


답변

nginx를 리버스 프록시로 실행하는 것이 좋습니다. 모든 정적 및 캐시 파일 (Apache보다 훨씬 빠르거나 메모리 오버 헤드가 적음)을 처리 한 다음 동적 컨텐츠에 대한 모든 요청을 Apache로 전달합니다.


답변

mod_php가 다른 대안보다 빠르지 않다는 것을 확신하지 못합니다. 어디에서 읽었습니까? 나는 nginx + php-fpm으로 몇 가지 실험실 테스트를 수행했으며 측정 한 결과 다른 모든 설정보다 뛰어납니다.

이 설정을 살펴보십시오 : http://interfacelab.com/nginx-php-fpm-apc-awesome/

http://www.dotdeb.org/의 PHP 패키지를 사용한다는 점을 제외하고는 거의 동일하게 설정했습니다. 여기에는 php-fpm 패키지와 사용할 수있는 init 스크립트가 포함됩니다. memecache 또는 syck을 사용하지 않습니다.


답변