加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

django – nginx和uWSGI给出“504网关超时”

发布时间:2020-12-13 21:24:18 所属栏目:Nginx 来源:网络整理
导读:我正在遵循教程Setting up Django and your web server with uWSGI and nginx. uWSGI正在运行 我设置了uwsgi来为我的Django项目提供以下一行. mydjangoproj $uwsgi --http 0.0.0.0:8002 --module wsgi --harakiri 5 当我在浏览器中去那里的时候,这个工作是42

我正在遵循教程Setting up Django and your web server with uWSGI and nginx.

uWSGI正在运行

我设置了uwsgi来为我的Django项目提供以下一行.

mydjangoproj $uwsgi --http 0.0.0.0:8002 --module wsgi --harakiri 5

当我在浏览器中去那里的时候,这个工作是42.42.42.42:8002.

我的nginx设置

nginx作为守护进程运行,访问它的默认站点,80端口,工作.

我使用以下mydjangoproj_nginx.conf文件将其添加到nginx的一个站点:

server {
    listen      8000;
    server_name 42.42.42.42;
    charset     utf-8;
    client_max_body_size 75M;

    location /static {
        alias /home/myuser/mydjangoproj/static; 
    }

    location / {
        uwsgi_pass 127.0.0.1:8002;
        include     /home/myuser/mydjangoproj/uwsgi_params;
    }
}

我使用uwsgi_params的未修改版本,从教程:

uwsgi_param QUERY_STRING $query_string;
uwsgi_param REQUEST_METHOD $request_method;
uwsgi_param CONTENT_TYPE $content_type;
uwsgi_param CONTENT_LENGTH $content_length;
uwsgi_param REQUEST_URI $request_uri;
uwsgi_param PATH_INFO $document_uri;
uwsgi_param DOCUMENT_ROOT $document_root;
uwsgi_param SERVER_PROTOCOL $server_protocol;
uwsgi_param HTTPS $https if_not_empty;
uwsgi_param REMOTE_ADDR $remote_addr;
uwsgi_param REMOTE_PORT $remote_port;
uwsgi_param SERVER_PORT $server_port;
uwsgi_param SERVER_NAME $server_name;

它完美地为静态文件提供服务.

错误

如果我访问42.42.42.42:8000它挂了很长时间,直到nginx超时我猜,我得到504网关超时.

uWSGI在shell中不写.如果直接访问浏览器,它会写入关于接收请求.

nginx错误日志只写入超时后:

2014/12/11 05:31:12 [error] 28895#0: *1 upstream timed out (110: Connection timed out) while reading response header from upstream,client: 66.66.66.66,server: 42.42.42.42,request: "GET / HTTP/1.1",upstream: "uwsgi://42.42.42.42:8002",host: "42.42.42.42:8000"

如果我关闭刚刚从shell运行的uWSGI,我马上就会得到一个502 Bad Gateway.

在线搜索时,人们只是建议将uWSGI超时设置为低于nginx超时,这就是为什么我用–harakiri 5运行uWSGI.

那么这里有什么问题呢?

最佳答案
我认为你在http模式下运行uwsgi –http 0.0.0.0:8002但是您已经配置了nginx,因为wsgi代理将您的uwsgi脚本更改为:

 uwsgi --socket :8002 --module wsgi --harakiri 5

注意,如果你在同一台机器上运行nginx和uwsgi,最好使用unix sockets

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读