“502 Bad Gateway”与乘客

时间:2011-01-13 09:53:39

标签: ruby-on-rails deployment passenger

我正在使用rails(2.3.10)/ passenger(2.2.15)/ nginx(0.7.67),当我运行我的应用程序时,它给了我“502 Bad Gateway”并且没有任何生产日志,我的conf文件是:

  1 server {
  2     listen  80;
  3     server_name  www.why.bz;
  4     root   /usr/local/apps/why/pro/public;
  5     access_log  /usr/local/apps/why/pro/log/access.log;
  6     passenger_enabled on;
  7 }

谁可以给我一些提示,谢谢!

3 个答案:

答案 0 :(得分:7)

我在过去几年里全职完成了Rails部署,所以希望我能提供帮助。你现在可能已经解决了这个问题,但下次有一些问题需要考虑:

  • 由于这是一个Ruby on Rails应用程序,你能告诉错误的来源:Nginx还是Rails本身?这听起来更像是一个Nginx问题,但最好知道。快速查看Rails production.log或Nginx的error_log应该可以了解这些信息。

  • 您如何连接到应用程序:Web浏览器或命令行? IP和主机名是否设置正确(尝试使用Linux“dig”命令进行验证)?你想点击http://localhost:80吗?

  • nginx采用的错误日志命令可以配置为帮助您调试问题(非常类似于access_log行):http://wiki.nginx.org/CoreModule#error_log

  • 最后,验证您的Web文件上设置的权限:nginx Web服务器需要能够访问它们。至少需要“读取”权限。

祝你好运, 哈蒙

答案 1 :(得分:0)

将其更改为

listen 443;

可能就是这么简单。

答案 2 :(得分:0)

在所需阶段可能缺少您的密钥库。

我有时会忘记的一件事,特别是如果我不是从暂存环境开始,然后在以后添加它的话,是将以下内容添加到我的secrets.yml文件中:

staging:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

这是告诉Rails从环境变量secret_key_base中获取SECRET_KEY_BASE的值。您必须通过将其放在nginx配置中来指定此变量:

passenger_env_var SECRET_KEY_BASE yoursupersecretkeybase;

如果您没有SECRET_KEY_BASE,则可以使用以下方法生成一个:

bundle exec rake secret