我正在使用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 }
谁可以给我一些提示,谢谢!
答案 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