NginxHttpUploadProgressModule never response "done" state for large files

When uploading large files (>150Mb) , progress bar shows normal till
100% value, but in the end of upload process he does not send “done”
response, and looks like this :


new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })

and after few seconds (~30s) “504 gateway time out” error is
showing.

The host config looks like the one in the UploadProgressModule example,
other vars
nginx.conf vars:
client_max_body_size 900m;
keepalive_timeout 70 30;
send_timeout 30s;

php.ini vars:
post_max_size = 300M
upload_max_filesize = 300M
max_execution_filesize = 30
max_input_time = 90

Any ideas ? Thanks.

Posted at Nginx Forum:

Hi,

On Mon, 2010-05-17 at 08:21 -0400, murphy wrote:

244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })
new Object({ ‘state’ : ‘uploading’, ‘received’ : 244431206, ‘size’ :
244431206 })

and after few seconds (~30s) “504 gateway time out” error is
showing.

That’s strange. Can you please compile nginx with --with-debug, then
activate the debug log and upload agin the same file.
Then send me privately the compressed log file so that I can analyze it.

One possibility is that your upstream is not slurping the file quickly
enough and then nginx timeouts. The upload progress module will report
the upload done only when the upstream finally gets it (which is usually
fast because on LAN or localhost).

What do you use as upstream?

max_execution_filesize = 30
max_input_time = 90

Brice F.
My Blog: http://www.masterzen.fr/