Ruby on rails 502坏网关nginx+;美洲狮+;弹性豆茎上的轨道3.2
部署成功,一切都是绿色的。但是当我们尝试访问应用程序URL时,它会给出Ruby on rails 502坏网关nginx+;美洲狮+;弹性豆茎上的轨道3.2,ruby-on-rails,nginx,amazon-elastic-beanstalk,puma,Ruby On Rails,Nginx,Amazon Elastic Beanstalk,Puma,部署成功,一切都是绿色的。但是当我们尝试访问应用程序URL时,它会给出502坏网关错误 使用ps-aux | grep puma检查puma进程不会返回连接到puma服务器的任何进程,但pgrep会返回以下内容 $pgrep -fl puma 18009 su -s /bin/bash -c bundle exec puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb webapp 18031 ruby /opt/rubies/ruby-2
502坏网关
错误
使用ps-aux | grep puma
检查puma进程不会返回连接到puma服务器的任何进程,但pgrep
会返回以下内容
$pgrep -fl puma
18009 su -s /bin/bash -c bundle exec puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb webapp
18031 ruby /opt/rubies/ruby-2.0.0-p598/bin/puma -C /opt/elasticbeanstalk/support/conf/pumaconf.rb
我已经尝试了所有可能的组合,如nginx/puma的其他论坛/博客或支持站点所示。以下是状态
ps-ef | grep PUMA
进行检查时,我可以看到进程ID发生了变化。因此,我让彪马在另一个港口工作,并试图检查它是否运行
从另一个端口启动,然后从另一个控制台使用wget访问URLhttp://127.0.0.1:3000
。它打印以下日志
current]$ bundle exec puma -b tcp://127.0.0.1:3001
Puma 2.0.1 starting...
* Min threads: 0, max threads: 16
* Environment: production
* Listening on tcp://127.0.0.1:3001
Rails Error: Unable to access log file. Please ensure that /var/app/current/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
Use Ctrl-C to stop
2015-03-16 13:19:35 +0000: HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
2015-03-16 13:19:35 +0000: ENV: {"rack.version"=>[1, 1], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "CONTENT_TYPE"=>"text/plain", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"2.0.1", "GATEWAY_INTERFACE"=>"CGI/1.2"}
current]$bundle exec puma-btcp://127.0.0.1:3001
彪马2.0.1启动。。。
*最小线程数:0,最大线程数:16
*环境:生产
*倾听tcp://127.0.0.1:3001
Rails错误:无法访问日志文件。请确保/var/app/current/log/production.log存在且为chmod 0666。日志级别已提升为警告,并将输出定向到STDERR,直到问题得到解决。
使用Ctrl-C停止
2015-03-16 13:19:35+0000:HTTP解析错误,请求格式错误():#
2015-03-16 13:19:35+0000:ENV:{“rack.version”=>[1,1],“rack.errors”=>>,“rack.multi-thread”=>true,“rack.multi-process”=>false,“rack.run\u once”=>false,“SCRIPT\u NAME”=>,“CONTENT\u TYPE”=>“text/plain”,“QUERY\u字符串”=>,“SERVER\u协议”=>“HTTP/1.1”,“SERVER\u软件”=>“2.0.1”,“网关接口”=>“CGI/1.2”}
那么,是否必须使用SSL?因为我认为默认情况下,它没有启用。我无法解决此问题。另外,我们应该只使用EC2自由实例而不是BeanStalk
我们现在已经使用RDS释放EC2实例,并使用Capistrano和Nginx+Unicorn部署rails应用程序。虽然这并不容易,但最终我们还是成功了。我在上传rails应用程序后遇到了这个问题,我在secrets.yml(configsecrets.yml)上发现了这行代码(自动生成):
secret\u key\u base:
因此,您必须将其作为环境变量添加到您的环境中
在环境仪表板中,转到配置软件环境属性并添加一个名为SECRET\u KEY\u BASE的新变量
您可以设置任何值,但请确保它是一个安全密钥。
这为我解决了这个问题,我希望能有所帮助。听起来nginx没有在puma运行的同一个端口上监听。您是否更改了puma/nginx配置?请签出/var/log/nginx/error.log以获取reason@Tal请看下面我的答案,我已经尝试了所有可能的配置,并检查了日志。问题是,Puma没有正常运行,并且没有打印任何错误日志。事情是,同样的配置在数字海洋上工作。因此,亚马逊似乎有问题。请在这方面提供帮助。好吧,发布答案不是办法。请移到问题部分。我必须承认,我已经受够了让亚马逊来处理我的服务器,并且已经转向弹性豆茎上的docker。很好地工作。通过添加SSL证书解决了此问题,SSL是此配置的必备工具。没有它,它就不会工作。