nginx und uWSGI geben "504 Gateway Timeout"

Ich folge dem TutorialEinrichten von Django und Ihrem Webserver mit uWSGI und nginx.

uWSGI ist in Betrieb

Ich habe uwsgi so eingerichtet, dass es meinem Django-Projekt mit der folgenden Zeile dient.

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

Dies funktioniert, wenn ich in einem Browser dorthin gehe, um42.42.42.42:8002.

Meine Nginx-Einrichtung

nginx wird als Daemon ausgeführt und der Besuch der Standardwebsite, Port 80, funktioniert.

Ich habe dies als Site zu nginx hinzugefügmydjangoproj_nginx.conf Datei

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;
    }
}

Ich benutze die unveränderte Version vonuwsgi_params, aus dem Tutorial:

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;

Es dient perfekt den statischen Dateien.

Erro

Wenn ich 42.42.42.42:8000 besuche, hängt es für eine lange Zeit, bis die Nginx-Zeitüberschreitung ich denke, und ich bekomme504 Gateway Time-out.

uWSGI schreibt nichts in die Shell. Beim direkten Besuch im Browser wird der Empfang einer Anfrage beschrieben.

Das Nginx-Fehlerprotokoll schreibt erst nach dem Timeout:

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"

Wenn ich die uWSGI schließe, die nur von einer Shell ausgeführt wird, erhalte ich sofort ein502 Bad Gateway.

Bei der Online-Suche wird empfohlen, das uWSGI-Zeitlimit niedriger als das nginx-Zeitlimit einzustellen. Aus diesem Grund starte ich uWSGI mit --harakiri 5.

Also, was ist mein Problem hier?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage