Я следую учебнику Настройка 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;
Он отлично обслуживает статические файлы.
Error
Если я посетил 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
.
Итак, в чем моя проблема?