Django+Nginx+uWSGI = 504 网关超时
Posted
技术标签:
【中文标题】Django+Nginx+uWSGI = 504 网关超时【英文标题】:Django+Nginx+uWSGI = 504 Gateway Time-out 【发布时间】:2011-10-04 01:33:00 【问题描述】:我正在运行 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
我在这台服务器上还有另外两个配置相同的站点,它们可以完美加载。
还有其他人遇到过这个问题吗?这里有几个与我的问题类似的线程,我已经尝试了其中的几个解决方案,但似乎没有任何效果。
提前感谢您的帮助!
【问题讨论】:
为 uWSGI 添加配置。我认为这里的路径有问题uwsgi_pass unix:///home/mysite/public/myapp.sock;
【参考方案1】:
当请求超过 NGINX uwsgi_read_timeout 设置时会产生该错误。 NGINX 超过此限制后,它会关闭套接字,然后 uWSGI 尝试写入已关闭的套接字,从而产生您从 uWSIG 看到的错误。
确保您的 NGINX 超时至少与 uWSGI 超时 (HARAKIRI_TIMEOUT) 一样高。
【讨论】:
为了澄清,您需要在相应的location
部分中添加uwsgi_read_timeout 600;
。
伙计,...我头疼了 3 个小时,试图在 nginx 中设置任何参数。谢谢!【参考方案2】:
unix:///home/mysite/public/myapp.sock; 语法不正确,这样使用:
unix:/home/mysite/public/myapp.sock;
【讨论】:
以上是关于Django+Nginx+uWSGI = 504 网关超时的主要内容,如果未能解决你的问题,请参考以下文章
Django + Uwsgi + Nginx 实现生产环境部署