Назад | Перейти на главную страницу

Nginx выдает ошибку «104: сброс соединения одноранговым узлом», когда Gunicorn возвращает 500

Я запускаю Django с Gunicorn (19.6.0) за Nginx (1.6.2). Все отлично работает с одной маленькой проблемой. Если я отправлю запрос POST с полезной нагрузкой JSON больше, чем около 10 КБ, а Django ответит 500er, я получу net::ERR_INCOMPLETE_CHUNKED_ENCODING в Chrome, и ответ пуст, хотя Django отправляет строку JSON {"error":"some error description"}.

Журнал Nginx показывает 104: Connection reset by peer:

Если полезная нагрузка запроса POST небольшая, я получаю ожидаемый результат. Если я отправлю тот же запрос (также с большими полезными нагрузками) непосредственно в Gunicorn, ошибки не произойдет, и я получу ожидаемый ответ.

Моя конфигурация Nginx:

server {
    listen 80 default_server;
    server_name _;
    client_max_body_size 10m;

    location /static/ {
    root /srv/yyyyy;
    }

    location /media/ {
    root /srv/yyyyy;
    }

    # Proxy Pass to Gunicorn
    location / {
    include proxy_params;
    proxy_pass http://unix:/srv/yyyyy/proxy_pass.sock;
    }
}

Я также тестировал proxy_buffering off; в блоке локации, но результат тот же.