我在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:
我能够在端口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;
}
答案 0 :(得分:-4)
我遇到了同样的问题。为了解决这个问题,我检查了/var/log/unicorn/unicorn.log文件,发现imagemagick丢失了。
要在Ubuntu上修复它:
sudo apt-get install imagemagick