Eu recebi ajuda da Phusion para resolver esse problema, então aqui está a solução que eu criei. Quando o nginx inicia no Ubuntu, o script de inicialização procura /etc/default/nginx
e executa os comandos encontrados antes de iniciar o nginx.
Então (além das configurações de limites acima) adicionando /etc/default/nginx
com o seguinte conteúdo:
ulimit -Hn 200000
ulimit -Sn 200000
e, em seguida, reiniciar o nginx, corrigiu o problema. Isso se aplica ao nginx e a todos os processos de passageiros, incluindo os processos PassengerHelperAgent e Rails.