繁体   English   中英

连接到上游时connect()失败(111:连接被拒绝)

[英]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”

  1. 什么是上游块?
  2. 什么是/ etc / nginx / sites-available / default? 这是我可以配置的地方吗?
  3. 为什么我收到上述错误?

我花了几个小时与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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM