Ao trabalhar com o Rails, nginx
pode ser usado para atender a várias funções, na maioria das vezes como um balanceador de carga HTTP ou como um front-end de servidor de aplicativos. Sua configuração é comum e funcionará, mas pode impor desafios de dimensionamento à medida que você cresce para níveis mais altos de tráfego.
Quando você está trabalhando com um punhado de servidores VPS, como descrito por você, uma instância nginx pode ser o balanceador de carga HTTP primário para tráfego de entrada e um front-end para descarregar responsabilidades de baixo nível do aplicativo Rails servidores (servindo arquivos estáticos, reescritas / redirecionamentos de URL, etc.).
O nginx pode manipular muitas milhares de conexões simultâneas sem muitos recursos, enquanto os servidores de aplicativos do Unicorn Rails normalmente só podem atender a um punhado de conexões simultâneas. À medida que você dimensiona mais, precisará de mais instâncias nginx load balancer / front-end (e um método de balanceamento de carga entre elas, como round-robin de DNS ou outros mecanismos).
Se você usa o Amazon AWS ou outras plataformas de hospedagem mais maduras, o uso de um ELB (Elastic Load Balancing - Balanceamento de Carga Elástico) como o principal balanceador de carga da Web é usado com frequência. Cada servidor de aplicativos executa nginx / Unicorn, utilizando o nginx como um processamento de front-end para descarregamento de cada Unicorn. Isso é muito mais fácil de dimensionar, devido ao ELB de alto volume na frente de cada servidor.