Essa é uma pergunta antiga, eu sei, mas surgiu em uma busca pelo problema (que passei a tarde tentando resolver). O comentário de Martin F me deu uma pista suficiente para fazê-lo funcionar!
O truque é definir proxy_buffering off;
no seu bloco de localização. Supondo que seu servidor upstream esteja enviando respostas em partes, isso fará com que o nginx envie as partes individuais de volta para o cliente - mesmo fazendo o gzip delas em tempo real se você tiver a compressão de saída gzip ativada.
Note que desligar o buffer pode ter outras desvantagens, então não desligue cegamente o buffer sem entender o porquê.