在Mac OS X上使用Nginx / Passenger的502错误网关错误(10.6.1)

经过几个小时的与这个exception作斗争,我终于承认失败。 如果有人在这里可以帮助我,我将不胜感激!


快速总结:

我在我的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" 

全部细节如下。


我在本地机器上安装了Nginx和Passenger,以便在本地开发中使用它。 我正在运行Apache和Passenger,但我得到了一些错误,所以我决定切换。

我没有任何麻烦地将Passenger Nginx扩展安装到/ usr / local / nginx

并在/usr/local/nginx/conf/nginx.conf中configuration了Nginx

为了完整,这里是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; } } 

然后,我添加/ usr / local / nginx / sbin到我的pathvariables。 到现在为止还挺好。 如果我使用sudo nginx从terminal启动Nginx,那么我不会遇到任何麻烦,我可以按照预期在http(冒号)// test.local处查看我的testingRails应用程序。

当我尝试configuration系统启动时加载Nginx的时候,问题就出现了。 我遵循了Nginx wiki的指示(对不同的path进行了一些调整)

我在/System/Library/LaunchDaemons/nginx.plist中创build了一个plist文件

它的内容是这样的:

 <?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> 

然后我运行sudo launchctl load -F /System/Library/LaunchDaemons/nginx.plist

如果我重新启动系统,并在浏览器中转到http://test.local ,我会看到一个页面:

502坏门户nginx / 0.7.61

如果我查看Nginx错误日志(位于/usr/local/nginx/logs/error.log)

我看到下面的错误logging:

 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" 

如果我手动停止,然后使用sudo从terminal启动Nginx,它开始工作。 说实话,这一个让我难住,这可能是一个非常简单的东西,但我现在看不到它。 任何想法或build议将受到感谢。 感谢您抽时间阅读!

伊恩

你需要设置“守护进程”。 launchctl假定它产生的进程不守护进程,否则无法知道何时重新启动进程。 http://almosteffortless.com/2009/09/16/passenger-with-nginx-on-mac-os-x/