<div dir="ltr">And maybe I am approaching this the wrong way? can you comment..<div><br></div><div>I want an nginx upload target for POST that reads the content, discards it, and reports the amount read. This is what I have in essence:</div><div><br></div><div>location ~* "/upload" {</div><div>  limit_except POST OPTIONS { deny all; }</div><div>  client_max_body_size 0;</div>  add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate";<br>  keepalive_timeout 0;<div>  add_header Content-Type 'text/html';</div><div>  return 200 '$content_length bytes';</div><div>}</div><div><br></div><div>The uploads are being done with XHR on the browser side. It works, however randomly (less than 1% of cases), browsers fail during the POST: they return xhr with readyState 4 but status 0, and only a partial upload progress recorded.</div><div>On the server side, no error is generated in error_log, and access_log reports status 200.</div><div><br></div><div>$request_length is very short, just the header of the upload.</div><div><br></div><div>I am wondering if this is mis-use of upload handling by nginx. However I do not want to setup an upstream server to receive the POST content, it is to be discarded anyway.</div><div><br></div><div>Is there a more correct way to handle POST within nginx, with a response after all data is read, but without an upstream server?</div><div><br></div><div>thanks.</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 18, 2015 at 10:08 AM, jb <span dir="ltr"><<a href="mailto:justinbeech@gmail.com" target="_blank">justinbeech@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">thanks and this is a popular answer on stack exchange but no, it does not work, because aborted requests have read less bytes -- $request_length reports how many bytes SHOULD have been read, but in the case of any problem, abort by client, or whatever, this is not how many bytes were actually read..<div><br></div><div>For accounting purposes, I'd want an exact mirror to $bytes_sent ... otherwise math does not add up :( I think there should be a $bytes_recd ..</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 18, 2015 at 9:47 AM, Valentin V. Bartenev <span dir="ltr"><<a href="mailto:vbart@nginx.com" target="_blank">vbart@nginx.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div>On Saturday 18 April 2015 08:23:37 jb wrote:<br>
> Is there a variable for bytes read ?<br>
><br>
> $content_length is what should be read, but if the request is terminated<br>
> early, it is wrong.<br>
> $request_length is not right either, it is logging 459 bytes on a 9mb<br>
> upload.<br>
><br>
<br>
</div></div>$request_length should work.<br>
<br>
  wbr, Valentin V. Bartenev<br>
<br>
_______________________________________________<br>
nginx mailing list<br>
<a href="mailto:nginx@nginx.org" target="_blank">nginx@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>