当 Gunicorn 返回 500 时,Nginx 失败并显示“104:对等方重置连接”

当 Gunicorn 返回 500 时,Nginx 失败并显示“104:对等方重置连接”

我在 Nginx (1.6.2) 后面运行 Django 和 Gunicorn (19.6.0)。一切都运行正常,但有一个小问题。如果我发送一个 JSON 有效负载大于 10KB 的 POST 请求,并且 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;位置块中进行了测试,但结果仍然是相同的。

相关内容