Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django nginx和uWSGI给出;504网关超时“;_Django_Nginx_Uwsgi - Fatal编程技术网

Django nginx和uWSGI给出;504网关超时“;

Django nginx和uWSGI给出;504网关超时“;,django,nginx,uwsgi,Django,Nginx,Uwsgi,我正在学习教程 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: serve

我正在学习教程

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"
如果我关闭uWSGI(它只是从shell运行),我会立即得到一个
502坏网关

在线搜索时,人们只建议将uWSGI超时设置为低于nginx超时,这就是我使用
--harakiri 5
运行uWSGI的原因


那么,我这里的问题是什么?

我认为您正在http模式下运行uwsgi
--http 0.0.0:8002
,但是您已经将nginx配置为wsgi代理,请将您的uwsgi脚本更改为:

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

请注意,如果您在同一台机器上运行
nginx
uwsgi
,最好使用执行此操作的!我认为nginx和uwsgi之间的通信应该是http,但显然是另一种连接。我通常会等几天,等待其他答案出现,然后选择最好的。我不知道这是否违反了指导方针。但我已经标记了它,现在回答:)Harakiri5和套接字超时5有什么不同?