I know it’s not an answer to your question, but you should re-evaluate
your application architecture. If you need progress report on lengthy
operations you can use separate batch processes, messaging queues,
databases, Ajax, and all sorts of tools.
The reason nginx buffers all output is because, most of the times,
generating the response is a much faster operation than transferring it
to the client. Therefore, by buffering it, nginx frees the backend
worker (the php child process) sooner and the system is able to serve
more requests per unit of time, for a given amount of ram. Which is one
of the main aims of server optimization.
That won’t help since if the buffer’s are too small then NginX will just
buffer it to a tmp file on the disk until the request is completed from
the fastcgi process.