Solved.
It's not nginx's problem.
It's protocol stack. Especially on windows os.
I found that client(windows os) did not reply ACK timely. It always sent a ACK after received lots of packets which cause the nginx proxy do not send packets uniformly.
Then I used another linux pc to act as client. It's ok.
Just for reference to those who maybe need it^_^
But there is sth I can not understand that I have turned off the proxy_buffering and not set the buffers and tmp files, where did the nginx proxy put the received upstream packets which have not been sent to the client because of the delayed ack?