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.