Primeiro, para esclarecer: o Nginx é um servidor da Web, com todos os recursos e a complexidade que isso implica. Ele também tem capacidade de armazenamento em cache, mas esse não é seu objetivo principal de design.
O verniz não é um servidor da web. Não pode preencher esse papel (não sem uma VCL verdadeiramente má, pelo menos). Sua função é armazenar em cache o conteúdo fornecido por outro servidor. Se necessário, pode alterar o pedido ou a resposta.
Se o nginx conseguir lidar com o seu tráfego, será suficiente. Se o nginx não conseguir acompanhar, uma maneira de aumentar sua capacidade é colocando um cache na frente dele e fazendo com que o cache manipule o maior número possível de solicitações.
Como exemplo, usamos o Apache para executar uma série de 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 do Apache. Os hosts do Varnish agora lidam com 85% de todas as solicitações recebidas sem incomodar o back-end do Apache.