Em relação a solicitações POST: Talvez você não tenha criado os diretórios 0 1 2 3 4 5 6 7 8 9 no seu diretório de destino de upload?
Você sempre pode usar DAV para pedidos PUT, você já os compilou em seu nginx:
location /upload {
alias upload/data;
client_body_temp_path upload/client_tmp;
dav_methods PUT DELETE MKCOL COPY MOVE;
create_full_put_path on;
dav_access group:rw all:r;
}
E você precisará disso (em http ou local):
client_max_body_size 10000m;
Agora, experimente:
curl -T ubuntu-10.04.4-alternate-amd64.iso http://localhost/upload/blah2
Felicidades! Georg