Varnish - Nginx - Apache é uma boa ideia?

10

Estou pensando na arquitetura de um novo servidor da Web. Seria bom ter o Varnish como cache na frente do Nginx como um proxy reverso e servindo arquivos estáticos na frente do apache para todo o trabalho pesado?

Vou executar o PHP e o Ruby em aplicativos rails.

Haverá muita sobrecarga passando solicitações do php para o apache através de dois outros processos?

Muito obrigado!

    
por Zoran Zaric 20.05.2010 / 19:03

7 respostas

8

Sim, é válido. Minha abordagem pessoal seria usar o Varnish na frente e usar o VCL para dividir o tráfego entre as solicitações estáticas do NGINX e seu trabalho pesado (seja o Apache ou o Passenger ou ... não importa). Isso é especialmente verdadeiro se é na mesma máquina, pois você não precisa da sobrecarga extra. Não te compra necessariamente nada.

    
por 20.05.2010 / 20:10
6

O Varnish ainda não suporta compressão gzip, então pode ser uma idéia trocar o nginx na frente para comprimir o que o verniz envia de volta. Já que o verniz e o nginx não lutam pelos mesmos recursos (o nginx usa CPU para compactação gzip, enquanto o verniz usa memória) eles devem rodar sem problemas na mesma máquina.

O verniz agora suporta a compactação gzip , a menos que você precise de terminação SSL (como sugerido nos comentários), sugiro colocar o verniz diretamente em contato com a Internet.

Para http:

(internet) --> (varnish, gzip, caching, esi) --> (application)

Para https:

(internet) --> (nginx, ssl)--> (varnish, gzip, caching, esi) --> (application)

Se você quiser o apache lá também (para o suporte mod_foobar onipresente), eu colocaria entre o verniz e o aplicativo

Atualização: Atualizado para incluir suporte ao gzip no verniz 3.0. Adicionado ssl / esi como sugerido nos comentários

    
por 09.06.2010 / 20:46
4

A quantidade de sobrecarga não deve ser significativa. Estou assumindo que parte da razão pela qual você deseja que essas duas camadas sejam escaláveis; Nesse caso, você provavelmente veria, em relação ao apache, que o verniz e o nginx não estão trabalhando muito.

Se você tiver todas as três camadas em uma máquina, haverá menos impacto no desempenho antes de atingir a capacidade do próprio servidor.

Como alternativa, por que não verniz + nginx com passageiro? Eu usei essa configuração no passado e nginx usando o passageiro é relativamente leve e correu muito bem. Pode valer a pena pensar se você não é casado com o apache executando sua pilha de trilhos.

    
por 20.05.2010 / 19:38
2

Eu sou o administrador do sistema para uma plataforma de comércio eletrônico de inicialização. Nós usamos verniz + nginx na frente de nossa pilha PHP / apache e isso funcionou maravilhas.

Nós temos um aplicativo de uso de memória alto e o aplicativo estava usando cerca de 15-20gigs de RAM por webnode e uma vez que colocamos o verniz na frente, agora é por volta de 8gig de RAM por nó. Eles nunca cuspiram.

Então eu recomendo strongmente.

    
por 21.05.2010 / 14:14
1

Estou executando o Drupal, com o módulo boost em um servidor Apache + PHP + MySQL, mas na frente deles estou usando o Nginx com o recurso gzip-static ativado e usando os resultados do boost para atender aos usuários.

E no topo de tudo isso eu estou usando verniz, tudo no mesmo PC, estou tendo bons resultados.

Também estou usando o Nginx para ajustar os cabeçalhos que o Drupal não faz muito bem para o cache.

    
por 17.04.2011 / 17:31
0

Não é uma boa ideia, a menos que você precise de algo como o ESI. O Nginx tem seu próprio sistema de cache que apresenta melhor desempenho .

    
por 13.09.2012 / 02:16
-1

O Apache pode ser usado para finalizar SSL (descriptografar), verifique o link

    
por 04.07.2013 / 22:18