Você está recebendo esta mensagem de erro porque seu aplicativo Sinatra não está atendendo no endereço IPv6 padrão para localhost, ::1
, mas está ouvindo no endereço IPv4 herdado, 127.0.0.1
.
Como você especificou que o upstream do nginx é localhost
, o nginx tenta primeiro o endereço IPv6, mas como o servidor do aplicativo não está escutando nesse endereço, o nginx recebe uma conexão recusada. Em seguida, ele tenta novamente a conexão no IPv4, que é bem-sucedido e atende ao seu aplicativo.
Como isso introduz um problema de desempenho, e como o IPv6 é preferido em relação ao IPv4 preterido, você deve reconfigurar seu aplicativo Sinatra para escutar no IPv6. Por exemplo,
set :bind, '::1'
Em particular, você deve não vincular a 127.0.0.1.
Você também pode simplesmente remover o host de ligação, porque por padrão ele escutará em IPv6 localhost se você estiver usando thin (como você deve em prod) ou WEBrick (em dev, se você esquecer de gem install thin). / p>
(E em uma nota relacionada, você configurou explicitamente o nginx para não ouvir em IPv6, o que causará problemas semelhantes mais tarde, ou talvez até agora. Você deve corrigir isso também , enquanto você está nisso.)