O verniz com nginx é melhor do que apenas usar nginx? [fechadas]

22

Eu vejo muita conversa sobre o uso do nginx com o Varnish e não entendo o porquê. Nginx não é suficiente?

O Nginx possui SSI, possui cache de proxy reverso, é leve, possui SSL, pode trabalhar com cgi, fpm, etc.

O verniz tem as mesmas coisas, mas não suporta ssl nem cgi.

Bogdan Cosmin
fonte
"Melhor" é realmente subjetivo. Depende de seus casos de uso ...
voretaq7
7
Às vezes, uma pergunta simples faz o trabalho melhor do que as complexas. Estou muito preocupado com ações como essas das pessoas que fecharam essa questão, assumindo que não era bom para o "formato original de perguntas e respostas". Estou pesquisando sobre esse assunto e fiquei muito interessado em ver o resultado desse debate.
31412 Roger
O verniz possui configuração vcl poderosa, limpeza, cache de proxy reverso, ESI nginx pode funcionar com FCGI, cache de proxy reverso, ssi, sem limpeza (talvez exista um módulo) em termos de desempenho, eles são quase os mesmos para arquivos estáticos, armazenamento em cache ... se você tem alguma dúvida que eu possa ajudar
Bogdan Cosmin

Respostas:

14

Eu descobri o verniz ~ 5% mais rápido para arquivos estáticos pequenos do que o nginx - verniz na frente do apache ou verniz na frente de um servidor de aplicativos da web seria um grande ganho; mas diante do nginx, o benefício é bastante insignificante (especialmente com despesas gerais e complexidade extra levadas em consideração)

Shish
fonte
Você pode fornecer alguns resultados de teste para apoiar isso? E se eu já estiver usando o nginx + opcache. Existe algum benefício em usar verniz então?
Serious
23

Primeiro, para esclarecer: o Nginx é um servidor da Web, com todos os recursos e complexidade que isso implica. Ele também possui capacidade de armazenamento em cache, mas esse não é seu principal objetivo de design.

O verniz não é um servidor web. Ele não pode desempenhar esse papel (não sem uma VCL realmente má). Sua função é armazenar em cache o conteúdo fornecido por outro servidor. Se necessário, pode alterar a solicitação ou a resposta.

Se o nginx pode lidar com seu tráfego, é o suficiente. Se o nginx não conseguir acompanhar, uma maneira de aumentar sua capacidade é colocar um cache na frente dele e fazer com que o cache lide com o maior número possível de solicitações.

Como exemplo, usamos o Apache para executar vários sites PHP relativamente complexos a partir de um cluster de servidores web. Quando começamos a ter problemas de capacidade, colocamos um par de servidores Varnish na frente do cluster Apache. Os hosts Varnish agora lidam com 85% de todas as solicitações recebidas sem incomodar o backend do Apache.

Insyte
fonte
Então, o Varnish armazena em cache o conteúdo dinâmico gerado pelo PHP? Ou apenas as outras coisas?
Alix Axel
O verniz armazena em cache o que você pede para armazenar em cache. Ele pode armazenar em cache apenas a saída do PHP, apenas os arquivos estáticos, ambos ou nenhum. É uma ferramenta muito poderosa.
INSYTE
Eu estava perguntando sobre o seu exemplo específico. Me surpreende como é possível armazenar em cache conteúdo dinâmico sem atrapalhar o aplicativo dinâmico (sessões PHP para iniciantes). O cache de conteúdo estático parece um pouco redundante para mim.
Alix Axel
3
Depende do conteúdo dinâmico. Digamos, por exemplo, que a página seja uma postagem de blog com comentários. Pode ser extremamente caro gerar o segmento de comentários, mas perfeitamente aceitável armazená-lo em cache por 5 minutos. Por outro lado, o armazenamento em cache do conteúdo dinâmico retornado por um aplicativo de webmail seria claramente problemático. Você pode até criar um caso misto: armazene em cache toda a saída de um aplicativo de comércio eletrônico, mas peça ao verniz que ligue para o back-end para preencher o indicador do carrinho de compras.
Insyte