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

eta*_*luz 7 ruby-on-rails nginx rackspace rackspace-cloud ruby-on-rails-4

我正在使用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!

Ash*_*son 9

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
Run Code Online (Sandbox Code Playgroud)

...但是,为了防止此类问题在未来发生(以及提高Rails应用程序的性能!),最好使用某种生产就绪的Rails应用程序服务器.我建议使用Phusion Passenger,因为它是最关键的解决方案 - 他们的nginx用户指南描述了安装和配置 - 但是有很多替代方案.对于您的选项是什么,它们都意味着什么,以及它们如何与StackOverflow问题的最佳答案相关联,这是一篇很好的文章.