Django + Nginx + uWSGI = 504网关超时

时间:2011-07-12 22:39:14

标签: python django nginx uwsgi

我正在运行Ubuntu 10.04,Django 1.3,Nginx 0.8.54和uWSGI 0.9.7。

Nginx和uWSGI都加载没有错误。但是,当您访问我的网站时,它会长时间停留,然后最终加载“504网关超时”错误。

这是我的Nginx虚拟主机配置文件:

server {
listen          80;
server_name     www.mysite.com mysite.com;
error_log       /home/mysite/log/error.log;
access_log      /home/mysite/log/access.log;

location / {
    auth_basic  "Restricted";
    auth_basic_user_file    /home/mysite/public/passwd;
    include uwsgi_params;
    uwsgi_pass unix:///home/mysite/public/myapp.sock;
}

location /media {
    alias /home/mysite/public/myapp/media;
}


error_page  401  /coming_soon.html;

location /coming_soon.html {
    root /home/mysite/public/error_pages/401;
}

location /401/images {
    alias /home/mysite/public/error_pages/401/images;
}

location /401/style {
    alias /home/mysite/public/error_pages/401/style;
}

}

我的网站日志显示了这个:

SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request / !!!

我的错误日志显示:

upstream timed out (110: Connection timed out) while reading response header from upstream

我在此服务器上有两个具有相同配置的其他站点,并且它们完全加载。

还有其他人遇到过这个问题吗?这里有几个线程与我的问题类似,我尝试了其中几个解决方案,但似乎没有任何效果。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:22)

当请求超过NGINX uwsgi_read_timeout 设置时,会产生该错误。在NGINX超过此限制后,它会关闭套接字,然后uWSGI会尝试写入已关闭的套接字,从而产生您从uWSIG看到的错误。

确保您的NGINX超时至少与uWSGI超时一样高(HARAKIRI_TIMEOUT)。

答案 1 :(得分:0)

UNIX:///home/mysite/public/myapp.sock; 语法不正确,使用如下:

UNIX:/home/mysite/public/myapp.sock;