我正在使用 nginx 网络服务器在 Rackspace 上托管我的 Rails 应用程序。

调用任何 Rails API 时,我在/var/log/nginx/error.log 中看到此消息:
*49 连接到上游时 connect() 失败(111:连接被拒绝),客户端:10.189.254.5,服务器:,请求:“POST/api/v1/users/sign_in HTTP/1.1”,上游:“http://127.0.0.1:3001/api/v1/users/sign_in”,主机:“anthemapp.com”

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

  • 我花了几个小时与 5-6 位不同的 Rackspace 技术人员(他们不知道如何解决这个问题)。这一切都始于我将服务器置于救援模式并按照以下步骤操作: https://community.rackspace.com/products/f/25/t/69 。一旦我退出救援模式并重新启动服务器,我就开始收到我正在写的错误。天啊!

    最佳答案

    Nginx 是一个反向代理服务器 - 它在您的服务器上的作用是接受 HTTP 请求并将它们代理到同一主机上的另一个进程。错误消息所谈论的“上游”指的是 nginx 配置中的位(其中一部分是 /etc/nginx/sites-available/default 文件),它告诉它在哪里发送传入请求。您看到的错误消息表明 nginx 收到了一个请求,但无法将它发送到它应该发送的另一个进程。

    当您的服务器重新启动时,nginx 进程会重新启动,但是您的 Rails 进程(本应在端口 3001 上监听的进程)却没有!

    如何重新启动 Rails 进程取决于您之前启动它的方式以及您的服务器的配置方式。它可能就像 cd 'ing 进入服务器上的 Rails 应用程序目录并运行一样简单:

    rails server -b 127.0.0.1 -p 3001 -e production -d
    

    ...但是,为了防止将来发生此类问题(并提高 Rails 应用程序的性能!),最好使用某种生产就绪的 Rails 应用程序服务器。我建议使用 Phusion Passenger,因为它是最完整的解决方案——他们的 user's guide for nginx 描述了安装和配置——但有很多替代方案。关于您的选项是什么、它们的含义以及它们与 the top answer of this StackOverflow question 的关系,有大量的文章。

    关于ruby-on-rails - 连接()失败(111 : Connection refused) while connecting to upstream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28311945/

    10-17 01:01