nginx и uWSGI дают «тайм-аут 504 шлюза»

Я следую за учебникомНастройка Django и вашего веб-сервера с помощью uWSGI и nginx.

uWSGI запущен и работает

Я настроил uwsgi для обслуживания моего проекта Django со следующей строкой.

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

Это работает, когда я иду туда в браузере, чтобы42.42.42.42:8002.

Моя настройка nginx

nginx работает как демон, и посещение сайта по умолчанию, порт 80, работает.

Я добавил это как сайт в nginx, используя следующиеmydjangoproj_nginx.conf файл:

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 Gateway Time-out.

uWSGI ничего не пишет в оболочке. Если вы заходите прямо в браузер, он пишет о получении запроса.

В журнал ошибок 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, который запускается только из оболочки, я сразу получу502 Bad Gateway.

При поиске в Интернете люди просто рекомендуют устанавливать время ожидания uWSGI ниже, чем время ожидания nginx, поэтому я запускаю uWSGI с--harakiri 5.

Итак, в чем моя проблема здесь?

Ответы на вопрос(1)

Ваш ответ на вопрос