Verniz -> Nginx -> Apache é uma boa idéia?

10

Estou pensando na arquitetura de um novo servidor da Web. Ter o Varnish como cache na frente do Nginx como proxy reverso e servir arquivos estáticos na frente do apache para todo trabalho pesado seria uma boa idéia?

Vou executar aplicativos php e ruby ​​on rails.

Haverá muita sobrecarga na solicitação de php para apache através de outros dois processos?

Muito obrigado!

Zoran Zaric
fonte

Respostas:

8

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

McJeff
fonte
sim esta é uma boa idéia, já que o verniz deve ser muito rápido para este
Zoran Zaric
6

O verniz ainda não suporta a compressão gzip, portanto, pode ser uma ideia trocá-lo com o nginx na frente para comprimir o que o verniz envia de volta. Como 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 funcionar sem problemas na mesma máquina.

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

Para http:

(internet) -> (verniz, gzip, cache, esi) -> (aplicativo)

Para https:

(internet) -> (nginx, ssl) -> (verniz, gzip, cache, esi) -> (aplicativo)

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

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

mogsie
fonte
Se o que estiver servindo conteúdo ao verniz o codificar no gzip, ele será repassado ao gzip sem reclamar: varnish-cache.org/wiki/FAQ/Compression A única coisa que o verniz não faz é pegar o conteúdo descompactado aplicação e reserve-o comprimido. Esta é a sua compreensão também?
ewalk
A única vez que você executa o nginx na frente do verniz é quando está usando o ESI. Como você não pode fazer a montagem ESI a partir de páginas compactadas e o Varnish não compactará uma página montada, o Nginx é colocado na frente do Varnish para fornecer essa compactação. Se a origem exibir o conteúdo compactado, o Varnish passará esses dados para o cliente na forma compactada.
user6738237482
Sim, o ESI é um dos motivos pelos quais eu recomendaria essa configuração, mas acho que se o seu back-end comprimir e você não usar o ESI, poderá dispensar o nginx, pois acredito que o verniz pode lidar com bastante tráfego sem suar a camisa.
Mogie
@ user6738237482, nginx suporta terminação SSL, o Varnish não. De fato, estar na frente de algo como verniz ou Apache é exatamente para o que o nginx foi projetado originalmente, como um servidor proxy leve e rápido.
precisa saber é o seguinte
4

A quantidade de sobrecarga não deve ser significativa. Estou assumindo que parte do motivo pelo qual você deseja ter essas duas camadas é a escalabilidade; Nesse caso, você provavelmente veria, em relação ao apache, que o verniz e o nginx não estão trabalhando muito.

Se 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 envernizar + nginx com o passageiro? Eu usei essa configuração no passado e o nginx usando o passageiro é relativamente leve e funcionou muito bem. Pode valer a pena pensar se você não é casado com apache executando sua pilha de trilhos.

Tony
fonte
Sim, eu poderia mudar do apache para o nginx para trilhos, mas oferecer aos clientes a capacidade de usar arquivos .htaccess é um + para o apache, pelo menos para o php.
Zoran Zaric
2

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

Temos um aplicativo de alto uso de memória e o aplicativo estava usando cerca de 15-20gigs de RAM por nó da web e, quando colocamos o verniz na frente, agora fica em torno de 8gig de RAM por nó. Eles nunca cravaram.

Então eu recomendo.

Mike
fonte
3
Você sabe que o verniz não fala ssl certo?
Mike
1

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

Além disso, estou usando verniz, tudo no mesmo PC, e 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.

Go2linux
fonte
0

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

VBart
fonte
Sei que essa é uma resposta antiga, mas infelizmente esse link não está mais disponível, por isso não posso verificar sua reivindicação. Na minha experiência, o Varnish é difícil de superar em sua velocidade e flexibilidade como proxy reverso.
Martijn Heemels
-1

O Apache pode ser usado para finalizar o SSL (descriptografar), consulte http://noosfero.org/Development/Varnish#SSL

brauliobo
fonte
1
Evite postar links como respostas, pois sua resposta provavelmente perderá todo o significado quando for afetada pelo linkrot . Considere editar sua resposta e incluir partes relevantes no link que você forneceu em sua resposta. De qualquer maneira, deixe o link no lugar como referência.
Bryan