UPDATE: May not be an nginx issue at all.
I did an experiment using a fixed X-Progress-ID so I could monitor the /progress url from another computer as I uploaded from my main computer.
Seems the hang up occurs within the AJAX request.
The ajax request fails every Xth request so the progress meter in the browser hangs.
However, if I just use a http meta refresh so that the javascript call is made anew every time, then I can get the progress.
Not sure what is hanging up the javascript when polling for progress in a loop, but I can work around it