502 errors with nginx+gunicorn

Hi all,

I am sending large post request to gunicorn/django behind nginx. If
gunicorn responds and closes the connection before nginx has finished
sending the large request body, it causes nginx to issue a 502 Bad
Gateway
response instead of the app server’s response. This scenario happens
e.g.,
if the endpoint requires authentication but the request is not
authenticated
(401 or 403).

More info here: Connection not closed properly after responding with 401 · Issue #872 · benoitc/gunicorn · GitHub

As noted in the linked gunicorn issue, I’ve worked around this by making
sure django waits for the entire request to come in before responding.
Not
sure if this is something you guys are interested in looking into, but
thought I’d share.

Thanks,
Colin

Posted at Nginx Forum:

Hello!

On Mon, Sep 08, 2014 at 05:01:07PM -0400, xkillac4 wrote:

As noted in the linked gunicorn issue, I’ve worked around this by making
sure django waits for the entire request to come in before responding. Not
sure if this is something you guys are interested in looking into, but
thought I’d share.

This looks like classic problem, solved with lingering close in
http world (see [1] for nginx own implementation details). There
isn’t much nginx can do in this case - it’s something to be
resolved in a backend software.

[1] Module ngx_http_core_module


Maxim D.
http://nginx.org/