连接到上游时 connect() 失败(111:连接被拒绝)
connect() failed (111: Connection refused) while connecting to upstream
我正在使用 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 请求并将它们代理到同一主机上的另一个进程。错误消息所指的 "upstream" 指的是 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 because it's the most turn-key solution -- their user's guide for nginx describes installation and configuration -- but there are plenty of alternatives. There's a great writeup of what your options are, what they all mean, and how they relate on the top answer of this Whosebug question.
在我的例子中,我需要 运行:
bundle install
bundle update
然后:
sudo stop puma-manager
sudo start puma-manager
当我在命令
下 运行 时,此问题已解决
cap production puma:restart
如果我们在生产环境中切换 ruby 版本,有时会发生这种情况
我正在使用 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 请求并将它们代理到同一主机上的另一个进程。错误消息所指的 "upstream" 指的是 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 because it's the most turn-key solution -- their user's guide for nginx describes installation and configuration -- but there are plenty of alternatives. There's a great writeup of what your options are, what they all mean, and how they relate on the top answer of this Whosebug question.
在我的例子中,我需要 运行:
bundle install
bundle update
然后:
sudo stop puma-manager
sudo start puma-manager
当我在命令
下 运行 时,此问题已解决cap production puma:restart
如果我们在生产环境中切换 ruby 版本,有时会发生这种情况