Time To First Byte and proxy_buffering

Hi all -

Does “proxy_buffering on” (especially when it’ll definitely buffer to
disk) imply that the client will not be sent the first part of the
response until nginx has received and buffered the entire response
from the upstream server? Or does/can the upstream response buffering
happen in parallel with the client-side response being sent?

Many thanks,
Jonathan

Jonathan M.
London, UK
http://www.jpluscplusm.com/contact.html

Hello!

On Mon, Oct 24, 2011 at 11:17:05PM +0100, Jonathan M. wrote:

Does “proxy_buffering on” (especially when it’ll definitely buffer to
disk) imply that the client will not be sent the first part of the
response until nginx has received and buffered the entire response
from the upstream server?

No.

Or does/can the upstream response buffering
happen in parallel with the client-side response being sent?

Yes.

There is a caveat though: individual buffers (see proxy_buffers
directive) will be sent to client only once they are fully filled.
And that’s why “proxy_buffering off” exists: it allows pass all
data without any delay even if buffer isn’t yet filled, as this
may be critical in some use cases (streaming, some server push
cases).

Maxim D.

On 24 October 2011 23:53, Maxim D. [email protected] wrote:

cases).
Many thanks for the clarification, Maxim.

I submit that this would a useful addition to the documentation,
especially as the current (English) documentation’s wording /could/
suggest the opposite, if only by inference:

Module ngx_http_proxy_module “If buffering
is switched off, then the response is synchronously transferred to
client immediately” … perhaps implying that if switched /on/, the
response is not “transferred to client immediately”.

Cheers,
Jonathan

Jonathan M.
London, UK
http://www.jpluscplusm.com/contact.html