Uploads & nginx/mongrel with multiple machine deployment

I am in the process of migrating an app that currently resides on a
single hardware server (running pound, nginx as an asset host,
memcached, mongrel and mysql) to a group of xen virtual machines: an
appserver running the mongrels, a webserver running nginx (which will be
handling the proxying now as well) and memcached, and a database server
running mysql.

One of the apps I am moving handles file uploads and I am not clear on
what impact splitting the web and app roles across servers will have.

I realize I will need to devise some method for making the uploaded file
accessible to the web server after post-processing (since I want it
serving all static content) but I am a bit confused about the actual
upload submission.

To the point, I am not clear if nginx is actually receives the uploaded
file and then hands it to the rails backend or if the rails backend
handles the file upload all by itself… If that is the case would I
need to also devise a way to make the file data accessible to the rails
backend since it would seemingly reside on a different server?

I think I am thinking myself in knots. :slight_smile: Could someone clarify this
for me?

nginx does buffer the whole request body before sending it to the
backends. For the file distribution maybe attachment_fu and S3? or
NFS …