광택-> Nginx-> Apache 좋은 생각입니까?


10

새로운 웹 서버의 아키텍처에 대해 생각하고 있습니다. Nginx 앞에서 캐시를 역 프록시로 사용하고 모든 무거운 리프팅에 대해 아파치 앞에서 정적 파일을 제공하는 것이 좋은 생각입니까?

Rails 애플리케이션에서 php와 ruby를 실행하겠습니다.

두 개의 다른 프로세스를 통해 PHP 요청을 아파치로 전달하는 오버 헤드가 너무 많습니까?

고마워요!

답변:


8

예, 유효합니다. 내 개인적인 접근 방식은 Varnish를 미리 사용하고 VCL을 사용하여 정적 NGINX 요청과 무거운 리프팅 (아파치 또는 승객 또는 상관없이)간에 트래픽을 분할하는 것입니다. 이 경우에 특히 유용 하다 당신이 여분의 오버 헤드를 필요로하지 않는 한 동일한 시스템에. 반드시 아무것도 사지 않아도됩니다.


그래, 이것은 니스가 아주 빠르기 때문에 아주 좋은 생각입니다
Zoran Zaric

6

바니시는 gzip 압축을 (아직) 지원하지 않으므로 니스가 다시 보내는 것을 압축하기 위해 nginx를 앞뒤로 바꾸는 것이 좋습니다. 니스와 nginx는 같은 리소스를 위해 싸우지 않기 때문에 (nginx는 gzip 압축을 위해 CPU를 사용하고, 니스는 메모리를 사용합니다) 동일한 머신에서 원활하게 실행됩니다.

Varnish는 이제 gzip compression을 지원 하므로 SSL 종료가 필요하지 않으면 (설명에서 제안한대로) 인터넷에 직접 니스를 연결하는 것이 좋습니다.

http의 경우 :

(인터넷)-> (니스, gzip, 캐싱, esi)-> (응용 프로그램)

https의 경우 :

(인터넷)-> (nginx, ssl)-> (니스, gzip, 캐싱, esi)-> (응용 프로그램)

유비쿼터스 mod_foobar 지원을 위해 아파치를 원한다면 니스와 응용 프로그램 사이에 넣을 것입니다.

업데이트 : 니스 3.0에서 gzip 지원을 포함하도록 업데이트 되었습니다. 의견에서 제안한대로 ssl / esi를 추가했습니다.


광택 인코딩 콘텐츠를 제공하고있다 어떤 경우는 GZIP에서, 다음 니스는 불평없이 gzip으로 압축에 전달합니다 : varnish-cache.org/wiki/FAQ/Compression 유일한 광택이하지 않는 것은 캐시되지 않은에서 압축되지 않은 테이크 내용입니다 압축하여 예약하십시오. 이것도 당신의 이해입니까?
ewalk

니스 앞에서 nginx를 실행할 때는 ESI를 사용할 때뿐입니다. 압축 된 페이지에서 ESI 어셈블리를 수행 할 수없고 Varnish는 어셈블리 된 페이지를 압축하지 않으므로 Nginx는 Varnish 앞에 배치되어 해당 압축을 제공합니다. 원본이 압축 된 콘텐츠를 제공하는 경우 Varnish는 해당 데이터를 압축 된 형식으로 클라이언트에 전달합니다.
user6738237482

예, ESI는이 구성을 권장하는 이유 중 하나이지만 백엔드가 압축되고 ESI를 사용하지 않으면 니스가없이 많은 트래픽을 처리 할 수 ​​있다고 생각하기 때문에 nginx를 생략 할 수 있다고 생각합니다 땀을 흘리다.
mogsie

@ user6738237482, nginx는 SSL 종료를 지원하지만 니스는 지원하지 않습니다. 사실, 니스 또는 아파치와 같은 것의 앞에있는 것은 nginx가 빠르고 가벼운 프록시 서버로서 원래 설계된 것입니다.
rmalayter

4

오버 헤드의 양은 중요하지 않아야합니다. 이 두 계층을 원하는 이유 중 일부는 확장 성을위한 것이라고 가정합니다. 이 경우 아파치와 관련하여 니스와 nginx가 매우 열심히 작동하지 않을 가능성이 높습니다.

한 시스템에 세 개의 계층이 모두있는 경우 서버 자체의 용량에 도달하기 전에 성능에 미치는 영향이 적어야합니다.

대안으로, 승객과 함께 + nginx를 니스로 칠해보십시오. 나는 과거 에이 설정을 사용했으며 승객을 사용하는 nginx는 비교적 가볍고 꽤 잘 달렸습니다. 레일 스택을 실행하는 아파치와 결혼하지 않았다면 생각해 볼 가치가 있습니다.


예, 레일의 경우 아파치에서 nginx로 전환 할 수 있지만 고객에게 .htaccess 파일을 사용할 수있는 능력을 부여하는 것은 아파치의 경우 + 이상입니다.
Zoran Zaric

2

저는 스타트 업 전자 상거래 플랫폼의 시스템 관리자입니다. 우리는 PHP / apache 스택 앞에서 varnish + nginx를 사용하며 놀라운 일을했습니다.

우리는 메모리 사용률이 높은 응용 프로그램을 가지고 있으며 웹 노드 당 약 15-20 기가의 RAM을 사용하고 있으며 바니시를 배치하면 노드 당 약 8 기가의 RAM입니다. 그들은 결코 급증하지 않았습니다.

그래서 나는 그것을 강력히 추천합니다.


3
당신은 광택이 ssl을 올바르게 말하지 않는다는 것을 알고 있습니까?
Mike

1

Apache + PHP + MySQL 서버에서 부스트 모듈을 사용하여 Drupal을 실행하고 있지만 그 앞에는 gzip-static 기능이있는 Nginx를 사용하고 부스트 결과를 사용하여 사용자에게 서비스를 제공하고 있습니다.

그리고 같은 PC에서 니스를 사용하는 모든 것의 좋은 결과를 얻었습니다.

또한 Nginx를 사용하여 Drupal이 캐시에 적합하지 않은 헤더를 조정하고 있습니다.


0

ESI와 같은 것이 필요하지 않으면 좋은 생각이 아닙니다. Nginx에는 자체 캐싱 시스템이있어 성능이 향상 됩니다.


나는 이것이 오래된 대답이라는 것을 알고 있지만 불행히도 그 링크는 더 이상 사용할 수 없으므로 귀하의 주장을 확인할 수 없습니다. 내 경험상 Varnish는 리버스 프록시로서의 속도와 유연성에서 이길 수 없습니다.
Martijn Heemels 2016 년


-1

Apache는 SSL을 종료 (암호 해독)하는 데 사용할 수 있습니다. http://noosfero.org/Development/Varnish#SSL을 확인 하십시오.


1
linkrot의 영향을받을 때 답변이 모든 의미를 잃을 수 있으므로 링크를 답변으로 게시하지 마십시오 . 답변을 편집하고 답변에 제공 한 링크에서 관련 부분을 포함시키는 것을 고려하십시오. 반드시 링크를 참조로 그대로 두십시오.
Bryan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.