В принципе так можно сделать, работать будет. Если не нравится, что nginx балансирует нагрузку (почему не нравится?), можно сделать один бэкапом или распределить нагрузку с помощью весов (weight).
Но лучше сделать так:
- два фронтэнд-сервера
- virtual ip (corosync, keepalived), мигрирующий с одного на другой в случае сбоя
- на virtual ip слушает haproxy, распределяющий нагрузку между фронтами
- nginx на фронтах распределяет нагрузку между бэкэндами
- бэкэнд-серверов два или больше, работают оба одновременно, можно масштабировать, дообавляя сервера
- база по возможности отделена, также разнесена на два или больше серверов, с репликацией