nginx und uWSGI gibt "504 Gateway timeout"
Ich bin nach dem tutorial Einrichten Django und Ihre web-server mit uWSGI und nginx.
uWSGI ist und läuft
Habe ich eingerichtet, uwsgi, zu dienen mein Django Projekt mit der folgenden Zeile.
mydjangoproj $ uwsgi --http 0.0.0.0:8002 --module wsgi --harakiri 5
Dies funktioniert wenn ich es in einem browser, um 42.42.42.42:8002
.
Meine nginx-setup
nginx läuft als daemon, und besuchen Sie die Standard-Website port 80 funktioniert.
Fügte ich dies als eine Website auf nginx mit den folgenden mydjangoproj_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 uwsgi_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 der statischen Dateien perfekt.
Fehler
Wenn ich Besuch 42.42.42.42:8000 hängt es für eine lange Zeit, bis die nginx-timeout ich denke, und ich bekomme 504 Gateway Time-out
.
uWSGI schreibt nichts in die Schale. Wenn Besuch direkt im browser, schreibt über den Empfang einer Anforderung.
Der nginx error log 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 in der Nähe der uWSGI, welche nur in einer shell ausgeführt, die ich sofort bekommen 502 Bad Gateway
.
Wenn online-Suche, Menschen, nur empfehlen, den uWSGI-timeout niedriger als der nginx-timeout, das ist, warum ich laufen uWSGI mit --harakiri 5
.
So, was ist mein problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie ausgeführt werden uwsgi im http-Modus
--http 0.0.0.0:8002
aber Sie konfiguriert haben, nginx als wsgi-proxy-ändern Sie Ihre uwsgi-Skript als:Beachten Sie, dass wenn Sie mit
nginx
unduwsgi
auf der gleichen Maschine ist es besser, unix-sockets