(Eu não estou indo para a "melhor maneira de balancear a carga", já que isso é obviamente específico da situação.)
Tanto o HAProxy quanto o nginx são excelentes opções para balanceadores de carga HTTP de código aberto no Unix. Em um nível muito alto, os prós e contras que vêm em primeiro lugar à mente são IMHO:
nginx:
- Pode fazer o descarregamento de SSL (geralmente um biggie).
- Possui um conjunto avançado de módulos de processamento de conteúdo, por exemplo, reescrita de cabeçalho, compactação de conteúdo, etc.
- Às vezes, pode ser "o único HTTPd que você precisa", simplificando a administração se você não precisar de nenhum outro HTTPd.
- Mais extensível com plugins, f.x. para o tráfego de roteamento.
HAProxy:
- Pode oferecer desempenho de servidor único mais alto que o nginx (especialmente ao executar no modo TCP, 10gbit / s foi demonstrado ).
- IMHO é mais simples de configurar e executar para configurações básicas de balanceamento de carga HTTP.
- Altera um pouco menos, especialmente as ramificações estáveis um pouco antigas, que costumam durar algum tempo sem precisar de segurança & atualizações de estabilidade.
Mas, como dito, ambos são excelentes escolhas. Escolha o que você se sente mais confortável.