<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p>
</p>
<div class="moz-text-flowed" style="font-family: -moz-fixed;
font-size: 12px;" lang="x-unicode">
<blockquote type="cite" style="color: #000000;">
<blockquote type="cite" style="color: #000000;">If you report
that nginx starts to send the content to the back-end
<br>
before nginx has received all of the content from the client,
then
<br>
proxy_request_buffering is not working as intended.
<br>
</blockquote>
</blockquote>
Yes, that's what I am reporting, I put together a very simple
tornado (python) script, I used both tcp connection and a unix
socket, no differences
<br>
I used curl and my own upload python client, result were the same
<br>
<br>
<blockquote type="cite" style="color: #000000;">
<blockquote type="cite" style="color: #000000;">When I try a
quick test here, nginx receives the full content from the
<br>
client before it tries to connect to the back-end.
<br>
</blockquote>
</blockquote>
I prepared a minimal working sample which is easy to run and test
<br>
this is python script: <a class="moz-txt-link-freetext"
href="https://paste.ubuntu.com/25903714/">https://paste.ubuntu.com/25903714/</a>
<br>
(see lines 16 to 23 to know how to run it, it's so simple, you
need a Linux based OS and python)
<br>
and this is nginx config: <a class="moz-txt-link-freetext"
href="https://paste.ubuntu.com/25903719/">https://paste.ubuntu.com/25903719/</a>
<br>
<br>
with the above python client you can easily produce the problem,
it will print chunk sizes along with the number of requests, use a
file larger than 3M to get better results
<br>
to make it complete, here is an example to upload file using curl:
curl --request POST --data-binary "@<i class="moz-txt-slash"><span
class="moz-txt-tag">/</span>file/path" <a class="moz-txt-link-freetext" href="http://localhost/upload">http://localhost/upload</a><span
class="moz-txt-tag">/</span></i>
<br>
<br>
This is my first time that I'm using this service, So I thought
putting codes somewhere else is cleaner and better
<br>
<br>
</div>
</body>
</html>