我正在运行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
我在此服务器上有两个具有相同配置的其他站点,并且它们完全加载。
还有其他人遇到过这个问题吗?这里有几个线程与我的问题类似,我尝试了其中几个解决方案,但似乎没有任何效果。
提前感谢您的帮助!
答案 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;