Подтвердить что ты не робот

Django + Nginx + uWSGI = 504 Тайм-аут шлюза

Я запускаю Ubuntu 10.04, Django 1.3, Nginx 0.8.54 и uWSGI 0.9.7.

Загрузка Nginx и uWSGI без ошибок. Однако, когда вы обращаетесь к моему сайту, он сидит в течение долгого времени и затем в конечном итоге загружает ошибку "504 Gateway Time-out".

Вот мой конфиг файла виртуального хоста Nginx:

server {
listen          80;
server_name     www.mysite.com mysite.com;
error_log       /home/mysite/log/error.log;
access_log      /home/mysite/log/access.log;

location / {
    auth_basic  "Restricted";
    auth_basic_user_file    /home/mysite/public/passwd;
    include uwsgi_params;
    uwsgi_pass unix:///home/mysite/public/myapp.sock;
}

location /media {
    alias /home/mysite/public/myapp/media;
}


error_page  401  /coming_soon.html;

location /coming_soon.html {
    root /home/mysite/public/error_pages/401;
}

location /401/images {
    alias /home/mysite/public/error_pages/401/images;
}

location /401/style {
    alias /home/mysite/public/error_pages/401/style;
}

}

Мой журнал сайта показывает это:

SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) on request / !!!

Мой журнал ошибок показывает это:

upstream timed out (110: Connection timed out) while reading response header from upstream

У меня есть два других сайта на этом сервере с одинаковой конфигурацией, и они загружаются ПОЛНОСТЬЮ.

Кто-нибудь еще столкнулся с этой проблемой? Здесь есть несколько потоков, похожих на мою проблему, и я попробовал несколько таких решений, но ничего не работает.

Заранее благодарю вас за помощь!

4b9b3361

Ответ 1

Эта ошибка возникает, когда запросы превышают настройку NGINX uwsgi_read_timeout. После того, как NGINX превысит этот предел, он закрывает сокет, а затем uWSGI пытается записать в закрытый сокет, создавая ошибку, которую вы видите из uWSIG.

Удостоверьтесь, что таймауты NGINX как минимум превышают тайм-ауты uWSGI (HARAKIRI_TIMEOUT).

Ответ 2

Unix:///home/mysite/public/myapp.sock; синтаксис не правильный, используйте вот так:

Unix:/home/mysite/public/myapp.sock;