will nginx cache partial response when upstream prematutely close
connection?
In our production environment, we found the following scenario requires
one
to manually clear proxy cache:
-
nginx asks upstrean for some large file, e.g., 5000KB
-
upstream send response, it flushes response header which (at least)
contains content-length -
Network is completely broken when 200KB was received by nginx. In
about
the same time, upstream closed connection by sending a FIN -
nginx cache the partial response and use it to serve subsequent
requests
until expiration. -
Browser request this large file then indefinitely hangs because
content-length indicates there were more to come but actually nginx has
nothing to send.
lei yang