Turns out to be an async/sync issue for the GET request to /progress... still investigating the issue so I can use async, but basically when I change
req.open("GET", "/progress", true);
to
req.open("GET", "/progress", false);
it starts working on my server
**UPDATE**: turns out to be a silly typo/cutpaste error, it should be
var req = new XMLHttpRequest();
so somehow the js error behaves differently on local and server instance and is ignored sometimes... now the async upload process (with progress bar and resumable) works yay!
**SIDE NOTE**: the given example on the main Nginx wiki for json parsing
var data = eval(req.responseText);
is really not safe, but I've noticed the nginx upload progress module returns back a wrongly-formatted JSON like
({ "state" : "uploading", "received" : 8671, "size" : 2218274 });
so doing something like this would be better
/* non-poor-man JSON Parser */
var response = req.responseText;
var jsonlen = response.length;
var jsondata = response.slice(1, jsonlen-4); //note returned json is malformed
var data = JSON.parse(jsondata);