Estamos falando de 1 a 3 servidores frontend no total, não de um grande farm de servidores com balanceamento de carga entre as camadas?
Colocar o nginx na frente do Vanish permite que você faça a compactação HTTP em tempo real. Essa é uma prática recomendada de desempenho, mas pode ser dispensada. (O conteúdo em verniz é geralmente mantido descompactado, de modo que o ESI Includes funciona, e, portanto, você não precisa lidar com várias versões em cache do mesmo objeto, dependendo da correspondência de cabeçalho / navegador Vary.)
Em relação ao nginx no servidor de aplicativos, o Apache com mod_wsgi não é o recomendado e maneira mais comum de implantar novas instalações do Django hoje em dia? Eu não estou ciente de uma razão convincente para usar nginx / fastcgi sobre Apache / mod_wsgi para Django; mas você deve receber conselhos de um especialista do Django.
No que diz respeito ao verniz que possui recursos atraentes de balanceamento de carga que o nginx não possui, não vejo o que eles são? O verniz possui balanceamento aleatório e round robin. nginx tem round-robin, IP do cliente e hashing consistente - não vejo um benefício significativo para o Varnish? É a recarga graciosa da configuração do VCL ou do Varnish ou algo mais?
Para uma pequena configuração de 1-3 servidores, acho que apenas faria
Varnish --> Apache / mod_wsgi / Django
ou talvez
Squid --> Apache / mod_wsgi / Django
e ignorar a compactação HTTP para simplificar, a menos que a largura de banda seja cara.
Atualização:
Graham Dumpleton escreveu um valioso comentário abaixo. Ele menciona uma configuração muito comum para, por exemplo, um blog em um VPS ou um pequeno farm da Web sem armazenamento em cache:
nginx --> Apache / mod_wsgi / Django
Esta é uma solução muito boa, por algumas razões:
- Configuração simples
- O nginx, que tem alta velocidade e sobrecarga mínima, lida com a entrega de arquivos estáticos e a manutenção de atividade da conexão com o navegador.
- O Django roda no excelente mod_wsgi de Graham Dumpleton, a plataforma recomendada para o Django.
A razão pela qual eu não mencionei isso inicialmente é que o OP parecia exigir o Varnish, uma solução de armazenamento em cache de alto desempenho. A combinação nginx / Apache / mod_wsgi não pode fazer o cache com um nível de desempenho e flexibilidade que corresponde ao verniz.