Estou executando o Django com o Gunicorn (19.6.0), atrás do Nginx (1.6.2). Tudo funciona bem com um pequeno problema.
Se eu enviar uma requisição POST com um payload JSON maior que cerca de 10KB e o Django responder com um 500er, recebo um net::ERR_INCOMPLETE_CHUNKED_ENCODING
no Chrome e a resposta está vazia, embora o Django esteja enviando uma string JSON {"error":"some error description"}
.
O log do Nginx mostra um 104: Connection reset by peer
:
Se a carga útil da solicitação POST for pequena, obtenho o resultado esperado. Se eu enviar a mesma solicitação (também com grandes cargas) diretamente para o gunicorn, nenhum erro acontece e eu recebo a resposta esperada.
Configuração do meu 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;
}
}
Eu também testei com proxy_buffering off;
no bloco de localização, mas ainda o mesmo resultado.