502 Erro de gateway inválido usando Nginx / Passenger no Mac OS X (10.6.1)

1

Depois de várias horas lutando com essa anomalia, finalmente admiti a derrota. Se alguém aqui puder me ajudar eu ficaria muito grato!

RESUMO RÁPIDO:

Eu tenho esse erro no meu log de erros Nginx:

2009/11/09 02:49:59 [error] 90#0: *7 connect() to unix:/tmp/passenger.54/master/helper_server.sock
failed (61: Connection refused) while
connecting to upstream, client:
127.0.0.1, server: test.local, request: "GET / HTTP/1.1", upstream:
"passenger://unix:/tmp/passenger.54/master/helper_server.sock:",
host: "test.local"

Os detalhes completos estão abaixo.

Instalei o Nginx e o Passenger em minha máquina local para usá-lo no desenvolvimento local. Eu estava executando o Apache e o Passenger, mas estava recebendo alguns bugs, então decidi mudar.

Instalei a extensão do Passenger Nginx sem problemas em / usr / local / nginx

e configurou o Nginx em /usr/local/nginx/conf/nginx.conf

Para completar, aqui está o conteúdo do nginx.conf:

worker_processes  2;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    passenger_root /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.5;
    passenger_ruby /usr/local/bin/ruby;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
     listen 80;
     server_name test.local;
     root /Users/i0n/Sites/test/public;
     passenger_enabled on;
     rails_env development;
     client_max_body_size 10M;
     client_body_buffer_size 128k;
     }
}

Em seguida, adicionei / usr / local / nginx / sbin à minha variável de caminho. Por enquanto, tudo bem. Se eu iniciar o Nginx a partir do terminal usando o sudo nginx eu não obtenho nenhum problema, eu posso ver o meu aplicativo de teste do Rails no link como esperado.

O problema surge quando tento configurar o sistema para carregar o Nginx na inicialização. Eu segui as instruções do wiki do Nginx (com alguns ajustes para diferentes caminhos)

Eu criei um arquivo plist em: /System/Library/LaunchDaemons/nginx.plist

O conteúdo é assim:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>Label</key><string>nginx</string>
    <key>Program</key><string>/usr/local/nginx/sbin/nginx</string>
    <key>KeepAlive</key><true/>
    <key>NetworkState</key><true/>
    <key>StandardErrorPath</key><string>/usr/local/nginx/logs/error.log</string>
    <key>LaunchOnlyOnce</key><true/>
  </dict>
</plist>

Eu então executo o launchctl do sudo load -F /System/Library/LaunchDaemons/nginx.plist

Se eu reiniciar o sistema e acessar o link no navegador, vejo uma página que diz:

502 Gateway inválido nginx / 0.7.61

Se eu olhar no log de erros do Nginx (que está em /usr/local/nginx/logs/error.log)

Eu vejo o seguinte erro registrado:

2009/11/09 02:49:59 [error] 90#0: *7 connect() to unix:/tmp/passenger.54/master/helper_server.sock
failed (61: Connection refused) while
connecting to upstream, client:
127.0.0.1, server: test.local, request: "GET / HTTP/1.1", upstream:
"passenger://unix:/tmp/passenger.54/master/helper_server.sock:",
host: "test.local"

Se eu parar manualmente e iniciar o Nginx a partir do terminal usando o sudo, ele começará a funcionar. Para ser honesta, esta me deixou perplexa, é provavelmente algo muito simples, mas eu não consigo ver isso no momento. Qualquer pensamento ou sugestão seria recebido com gratidão. Obrigado por dedicar um tempo para ler isso!

Ian

    
por i0n 09.11.2009 / 04:27

1 resposta

3

Você precisa definir "daemon off". O launchctl assume que os processos gerados por ele não são daemonizados; caso contrário, não é possível saber quando reiniciar um processo. link

    
por 09.11.2009 / 22:51