리버스 프록시로 Nginx 대 Apache 중 하나를 선택


36

이런 종류의 질문은 아마도 여기에 요청되었을 수 있지만 실제로 내 질문과 일치하는 것을 찾을 수 없었습니다. nginx 성능이 상당히 인상적이라고 들었지만 Apache에는 더 많은 문서, 커뮤니티 (read : expert)가 도움을 요청했습니다.

이제 내가 알고 싶은 것은 두 웹 서버가 성능, 구성 용이성, 사용자 정의 수준 등의 측면에서 어떻게 비교되는지입니다. vps 환경에서 REVERSE PROXY 서버로 ??

나는 여전히 얇은 (루비 웹 서버 중 하나)와 함께 제공되는 루비 웹 응용 프로그램 (ROR이 아닌)에 대해 두 가지 무게를 측정하고 있습니다.
구체적인 답변을 많이 주시면 감사하겠습니다. 루비 부분에 닿지 않는 일반적인 대답은 괜찮습니다. 나는 여전히 웹 서버 관리에 멍청하다.


마틴과 webdestroya에 tnx는 대답한다, 지금 나는 nginx에 기대어있다
mhd

니스와 같이 특별히 설계된 리버스 프록시를 사용하는 것이 더 합리적이지 않습니까?
ptman

답변:


31

webdestroyas 답변의 가장 중요한 점에 동의했기 때문에 이것을 주석에 넣고 싶었지만 너무 길었습니다.

VPS 환경에 있으므로 RAM이 거의 없을 것입니다. 이러한 이유만으로도 Nginx의 메모리 풋 프린트가 Apaches보다 작기 때문에 Nginx를 원할 것입니다.

또한 나는 언급 된 몇 가지 주장에 동의하지 않습니다.

구성 용이성 :
Nginx는 Apache보다 어렵지 않습니다. 그것은 다르다. 아파치에 익숙하다면 변경이 항상 더 어려울 것인데, 이것이 구성 스타일 자체가 더 어렵다는 것을 의미하지는 않습니다. 나는 1 년 전에 Apache에서 Nginx로 완전히 마이그레이션했으며 오늘은 Nginx를 구성하기가 매우 쉬운 반면 Apache 서버를 구성하는 데 어려움을 겪고 있습니다.

루비의 경우 :
Nginx에는 Passenger가 있지만, 루비에 연결하는 데 열등한 방법으로 설명되어 있습니다. 나는 Ruby 프로그래머가 아니기 때문에 이것을 확인할 수는 없지만 Unicorn과 Thin이 더 나은 대안으로 언급되는 경우가 많습니다.

결론 :
Nginx는 리버스 프록시가되었습니다. 처음에는 정적 파일을 제공하고 HTTP / 1.0을 통해 백엔드 서버로 프록시를 리버스했습니다. 이후 fastcgi,로드 밸런싱 및 기타 다양한 기능이 추가되었지만 초기 설계 목적은 정적 파일 및 리버스 프록시를 제공하는 것이 었습니다. 그리고 이것은 정말 잘합니다.

반면에 아파치는 범용 웹 서버이다. 프록시를 완벽하게 되돌릴 수 있다는 것은 의심의 여지가 없지만 최소한의 메모리 공간을 갖도록 설계되지 않았으므로 Nginx보다 많은 리소스가 필요하므로 초기 VPS 환경 인수가 시작됩니다.


설명을 위해 +1
John Gardeniers

나는 그것을 당신의 유일한 웹 서버로 추천하기 위해 갈 것입니다. 내 의견 serverfault.com/questions/133481/… <-여기를 참조 하십시오. VPS에서 유일한 웹 서버로 사용하고 있으며 다른 사용자가 PHP / CGI 앱을 위해 FastCGI를 사용하고 있습니다.
Jason

Jason 저는 1 년 넘게 유일한 웹 서버로 사용하고 있으며 하루에 수백만 페이지를 처리합니다. 나는 당신의 추천에 전적으로 동의합니다! :)
Martin Fjordvald

8

성능 :
NGinX. 이 서버는 성능이 가장 우수한 웹 서버 중 하나로 알려져 있으며 여러 회사 (Notable, MediaTemple)에서 사용합니다.

구성 용이성 :
Apache. 아파치 설정은 정말 간단하고 강력합니다. Nginx는 강력하지만 설정 파일보다 프로그래밍 언어처럼 보이기 때문에 이해하기가 매우 어려울 수 있습니다.

커스터마이즈 레벨 :
Apache. 아파치는 수많은 모드와 다른 플러그인을 가지고있다. Nginx에는 여전히 플러그인이 있지만 Apache에는 Nginx보다 많은 것이 있다고 생각합니다.

Ruby의 경우 :
Nginx를 Mongrel / webrick과 함께 강력한로드 밸런서로 사용할 수 있다는 것을 알고 있습니다. 그러나 Apache에는 Phusion / Passenger가있어 통합이 더 좋습니다.

리버스 프록시 수상자 :
NGinX


2
나는 논쟁하지 않고 관심이 있습니다. 왜 Nginx가 리버스 프록시의 승자입니까? 나머지 대답은 실제로 하나가 다른 것보다 두드러지지는 않습니다. 무엇이든 Apache를 선호하는 경향이 있습니다.
John Gardeniers

1
글쎄, 대부분의 경우 높은로드로 인해 리버스 프록시가 필요하기 때문입니다. 성능이 아마도 가장 큰 문제 일 것입니다.이 경우 Nginx가 승자가 되었기 때문에 제가 선택한 이유입니다. 개발자로서, 나는 아파치를 사랑하지만, "나는이 웹 서버에서 가장 성능을 얻을 수있는 방법"지점에서, 내가 Nginx와 함께 갈 것
미치 뎀시

8

Nginx는 이벤트 기반이며 아파치는 프로세스 기반입니다. 높은 부하에서 이것은 세상의 모든 차이를 만듭니다 ... 아파치는 각 연결마다 새 스레드를 포크하거나 시작해야하지만 nginx는 그렇지 않습니다. 이 차이는 주로 메모리 사용량뿐만 아니라 사용자 응답 시간 및 기타 성능 지표에서도 나타납니다. Nginx는 최신 하드웨어에서 수만 개의 동시 HTTP 연결 유지를 처리 할 수 ​​있습니다 . Apache는 각 연결에 1-2MB의 스택을 사용하므로 수학을 수행하면 스왑을 시작하지 않고 동시에 수백 또는 수천 개의 연결 만 처리 할 수 ​​있습니다.

우리는 환경에서 Apache와 IIS 앞에서 nginx를로드 밸런싱 및 캐싱 프록시로 사용하며 더 행복하지 못했습니다. 고가의 임대 F5 장치 대신 두 개의 작은 nginx 상자를 사용하며, 현장은 느낌과 측정 된 응답 시간 모두에서 훨씬 빠릅니다.


1

나는 약 2 주 전에 당신과 같은 딜레마에있었습니다.

내 연구에서 nginx는 정말 빠르고 리소스 친화적이지만 프록시 정적 파일을 되 돌리는 데만 사용되었습니다. 나머지는 솔루션을 구성하거나 스크립팅해야하는 솔루션입니다.

AFAIK nginx에는 htaccess 파일이 없으므로 해당 기능에 따라 다른 방법을 찾아야합니다.

AFAIK가 필요한 모든 것이 작동하며 튜토리얼을 보았습니다.

테스트 및 프로파일 링 설정으로 nginx를 사용합니다. 일반적인 램프 응용 프로그램이 있습니다.

프록시를 리버스하고 nginx에서 정적 파일을 제공하고 PHP와 같은 모든 것을 실행중인 Apache 인스턴스로 전달하는 사람들이 있다는 것을 읽었습니다. 그들은 좋은 상충 관계를 주장합니다. 이에 대한 성능 데이터는 없지만 알고 싶을 수도 있습니다.


2
성능상의 이유로 아파치에서 htaccess 재정의를 비활성화하는 것은 매우 일반적이며, 고성능으로 설계된 서버에서 이러한 기능을 지원하는 것은 의미가 없습니다.
theotherreceive

그 진술을 추가해 주셔서 감사합니다. OP는 관리자가 아니므로 명확해야합니다.
deploymonkey

1

지난 몇 년 동안 다양한 환경의 다양한 플랫폼에서 Apache의 mod_proxy에 심각한 문제가있었습니다. 때때로, 그것은 단순히 작동을 멈추고 유일한 해결책은 Apache 서버를 다시 시작하는 것 같습니다.

개인적으로 저는“nginx vs Apache”가 아니라“nginx vs lighttpd”라고 묻지 않았습니다 – 그것은 훨씬 더 어려운 요구입니다!


유효한 주장이지만, 지난번에 확인했을 때, lighttpd는 여전히 오랫동안 뛰어난 버그를 가지고 있었고 메모리 누수로 유명했습니다. 관리자의 프로덕션 배포에 대해서는 권장되지 않았습니다. 이것이 바뀌 었습니까?
deploymonkey

확실히,주의 사항이 있습니다 (특히 경우 매우 큰 파일을 제공)하지만 프록시로서 아파치보다 훨씬 더 안정적이다 - 나는 지난 6 개월 동안 여러 배포에서 실제 문제를 했어

몇 가지 잊혀진 이유로 후보 목록에서 lighttpd를 작성했습니다 :)
mhd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.