Adicionando um proxy reverso - nginx ou verniz

5

Atualmente, a maioria dos nossos aplicativos Rails e LAMP é fornecida para os passageiros Apache e Apache, mas estamos considerando adicionar o Nginx ou o Varnish como proxy reverso para reduzir um pouco a carga em nossos servidores.

Estou ciente de que você pode usar o Varnish e o Nginx juntos, mas considerando que há investimento de tempo para aprender como ambos funcionam e, sempre que possível, queremos manter o número de 'partes móveis' em nossa infra-estrutura o mais baixo possível, estou tentando descobrir quais são as vantagens e desvantagens entre usar:

  • nginx por si só como o proxy reverso / cache reverso
  • apenas como o proxy / cache reverso
  • nginx e verniz juntos

Eu entendo que o nginx é extremamente rápido, e está ganhando destaque como um servidor HTTP completo ao ficar mais popular, então eu posso ver o argumento para investir algum tempo em aprender como este servidor funciona, mas o Varnish ainda é um desconhecido para mim.

Por que eu usaria o Varnish se o nCache estiver agora no Nginx?

Obrigado

    
por Chris Adams 16.07.2010 / 16:06

2 respostas

1

Você espera usar o Edge Side Includes (ESI)? Nesse caso, o módulo Nginx ESI está quebrado e possui alguns bugs abertos. Se você usar o Varnish, a saída não será compactada, então você está um pouco preso usando o Nginx para compactar páginas habilitadas para ESI. Enquanto trabalho com frameworks Python, o Rails é similar.

Com sua configuração atual, você pode fazer algo como:

Nginx - > Apache - > Passageiro - > Trilhos Verniz - > Apache - > Passageiro - > Rails

Ambos cairiam na frente do seu sistema existente. Com o Nginx, você também pode fornecer acesso direto aos arquivos estáticos e permitir que eles sejam exibidos sem precisar fazer proxy através do Apache. Usando a diretiva Location, você pode cortar partes do seu espaço web e impedir que ele tenha que passar pelo proxy.

No entanto, se você quiser mudar completamente para o Nginx, sua infraestrutura se tornará:

nginx - > passageiro - > rails (nginx - > uwsgi - > python)

Se você adicionar verniz, acabará com:

verniz - > nginx - > passageiro - > trilhos

a menos que você use o ESI e, nesse caso, você acabará com:

nginx - > verniz - > nginx - > passageiro - > trilhos

Em algum momento, remover o verniz da mistura torna-se bastante intrigante. No entanto, versões recentes do Varnish ainda são mais rápidas que o cache do Nginx e você tem muito controle sobre como você pode armazenar em cache. Enquanto o Nginx e o Varnish dão a você um pouco de controle, o VCL do Varnish permite que você escreva código C para fazer coisas que não saibam da caixa, sem tocar no código-fonte do daemon. Se isso é útil para você é com você.

Como você está usando o Apache atualmente, eu estaria mais inclinado a colocar o Varnish na frente, a menos que você vá migrar para o Nginx e remover o Apache completamente. Verniz no seu caso é mais uma solução drop-in. Se você decidir usar o ESI no futuro, precisará executar ambos.

    
por 16.07.2010 / 16:49
1

Aqui está um teste de comparação de Varnish, Nginx (a estrela em ascensão), Apache Traffic Server (outro cache de proxy), G-WAN (um servidor de aplicativos com scripts C) e Lighttpd (um bom servidor wweb):

link

O Apache Traffic Server é um proxy HTTP e servidor de cache criado pela Inktomi e distribuído como produto comercial antes da aquisição da Inktomi pelo Yahoo.

O Yahoo diz que usa o TS para atender a mais de 30 bilhões de objetos por dia. Eles também dizem que o TS é um "produto de literalmente centenas de anos de desenvolvimento".

    
por 25.03.2011 / 13:39