Nginx / Unicorn:从上游

时间:2015-07-07 19:29:37

标签: ruby-on-rails http nginx amazon-ec2 unicorn

我在rails nginx / unicorn服务器上遇到上游超时错误。我试图解决这个问题,但没有找到任何适合我的解决方案。

我正在粘贴我在nginx error.log文件中获得的确切错误:

 upstream timed out (110: Connection timed out) while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: default_server, request: "GET / HTTP/1.1", upstream: "http://unix:/tmp/unicorn.todo.socket/", host: "xxx.xxx.xxx.xxx"

我正在关注以下2个博客,在我的ubuntu EC2机器上使用Ruby on Rails应用程序设置nginx和unicorn:

  1. https://gist.github.com/billie66/3696537
  2. https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04
  3. 我能够在端口3000上的生产环境中运行服务器但现在,我需要在端口80上运行服务器,以便我可以将DNS指向我的服务器IP。我使用了以下方法来运行它:

      
        
    • unicorn.todo.socket是在使用此命令在独角兽上运行应用程序后创建的 - unicorn -c config/unicorn.rb -E production

    •   
    • 在sites-available / default中,所有配置都是正确的,包括上游。

    •   
    • 在启用站点/默认设置中,配置与sites-available / default相同,因为这两者都是链接的。该文件包含在/ etc / nginx /目录中的nginx.conf文件中。

    •   
    • 在日志中,我收到上游超时错误。这也显示nginx需要时间连接到unicorn.todo.socket但无法调试此部分,因为所有配置都正确并且正确地在其他服务器上运行相同的东西。

    •   
    • 我已经使用了' sudo nginx -t'用于nginx配置的命令,这也显示一切正常。

    •   
    • 超时后,我在公共文件夹中收到ruby 500页错误,这意味着路径和其他配置也正确。

    •   
    • 我已经完全删除了nginx和相关组件,并再次将它们重新安装到服务器,但没有再次成功。

    •   
    • 当我运行sudo service nginx restart时,它会重新启动nginx,我可以看到运行了一些pid的nginx服务器。

    •   
    • 我已经更改了unicorn.rb监听路径的路径,这也无效。

    •   
    • 我用于此服务器的独角兽版本正在另一台服务器上工作,所以我没有改变它。

    •   
    • 已添加proxy_read_timeout 150,但这也无效。

    •   

    请检查我已尝试的所有上述内容,如果我在端口80上使用nginx / unicorn运行服务器时遗漏了任何内容,请告诉我。

    的/ etc / nginx的/ /默认启用位点-

    upstream app {
      server unix:/tmp/unicorn.todo.socket fail_timeout=0;
    }
    
    server {
      listen 80 default_server;
      listen [::]:80 default_server;
      server_name default_server;
      root /home/ubuntu/<project_folder>/public;
    
      try_files $uri/index.html $uri @app;
    
      location @app {
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header Host $http_host;
          proxy_redirect off;
          proxy_pass http://app;
          proxy_read_timeout 150;
      }
      error_page 500 502 503 504 /500.html;
      client_max_body_size 4G;
      keepalive_timeout 10;
    }
    

1 个答案:

答案 0 :(得分:-4)

我遇到了同样的问题。为了解决这个问题,我检查了/var/log/unicorn/unicorn.log文件,发现imagemagick丢失了。

要在Ubuntu上修复它:

sudo apt-get install imagemagick