A configuração do seu unicórnio provavelmente não está configurada corretamente.
Isso acontece no meu servidor quando o nginx está rodando, mas o unicórnio não está. A razão é que o nginx tenta passar o pedido para o socket, mas o unicórnio não está lá para recebê-lo.
Por padrão, o unicorn escuta apenas na porta 8080. Você pode alterar suas configurações de unicórnio para ouvir em uma porta diferente ou em um soquete.
Se você estiver usando um arquivo de configuração de unicórnio ( config/unicorn.rb
), então dentro desse arquivo, você deve ter algo como (note que você terá que mudar o caminho do socket):
listen File.expand_path("tmp/sockets/unicorn.sock", RAILS_ROOT)
Para propósitos de depuração, eu faço ouvir também uma porta.
listen File.expand_path("tmp/sockets/unicorn.sock", RAILS_ROOT)
listen 3000, :tcp_nopush => true
Para iniciar o unicórnio em seu servidor da web de produção, um comando semelhante ao seguinte precisa ser executado:
bundle exec unicorn -E production -c config/unicorn.rb
Isso usa o arquivo de configuração do unicórnio. Consulte o link para obter um exemplo de arquivo de configuração.
Se você não usar um arquivo de configuração de unicórnio, será necessário um switch de linha de comando no formato:
-l, --listen ADDRESS
Por exemplo:
bundle exec unicorn -l tmp/sockets/unicorn.sock
Note que estou usando um caminho relativo, porque o pwd
que eu uso é o diretório raiz do rails.