[英]connect() to unix:/var/run/unicorn.sock failed (111: Connection refused) while connecting to upstream
[英]connect() failed (111: Connection refused) while connecting to upstream
我正在使用nginx webserver在Rackspace上托管我的Rails应用程序。
在调用任何Rails API时,我在/var/log/nginx/error.log中看到此消息:* 49 connect()失败(111:连接被拒绝),同时连接到上游,客户端:10.189.254.5,server :, request: “POST / api / v1 / users / sign_in HTTP / 1.1”,上游:“ http://127.0.0.1:3001/api/v1/users/sign_in ”,主持人:“anthemapp.com”
我花了几个小时与5-6名不同的Rackspace技术人员(他们不知道如何解决这个问题)。 这一切都始于我将服务器置于救援模式并遵循以下步骤: https : //community.rackspace.com/products/f/25/t/69 。 一旦我退出救援模式并重新启动服务器,我就开始收到我正在写的错误。 TNX!
Nginx是一个反向代理服务器 - 它在您的服务器上的角色是接受HTTP请求并将它们代理到同一主机上的另一个进程。 错误消息所讨论的“上游”是指nginx配置中的位(其中一部分是/etc/nginx/sites-available/default
文件),它告诉它发送传入请求的位置。 您看到的错误消息表明nginx收到了请求,但无法将其发送到它应该发送的其他进程。
当您的服务器重新启动时,nginx进程会重新启动,但是您的Rails进程 - 那个意味着要侦听端口3001的进程 - 没有!
如何重新启动Rails进程取决于之前启动它的方式以及服务器的配置方式。 它可能就像cd
进入服务器上的Rails应用程序目录并运行:
rails server -b 127.0.0.1 -p 3001 -e production -d
...但是,为了防止此类问题在未来发生(以及提高Rails应用程序的性能!),最好使用某种生产就绪的Rails应用程序服务器。 我建议使用Phusion Passenger,因为它是最关键的解决方案 - 他们的nginx用户指南描述了安装和配置 - 但是有很多替代方案。 对于您的选项是什么,它们都意味着什么,以及它们如何与StackOverflow问题的最佳答案相关联,这是一篇很好的文章。
在我的情况下,我需要运行:
bundle install
bundle update
接着:
sudo stop puma-manager
sudo start puma-manager
当我在命令下面运行时,这个解决了
cap production puma:restart
如果我们在生产中切换ruby版本,有时会发生这种情况
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.