J'ai configuré le module de téléversement Nginx pour gérer les téléchargements de fichiers pour une application s'exécutant derrière lui en mode proxy inverse. Cela fonctionne localement mais pas sur le serveur (EC2 Ubuntu AMI). J'ai compilé Nginx moi-même avec le module de téléchargement inclus. Voici la partie pertinente de mon nginx.conf (de l'intérieur de la section serveur) :
location /upload {
# passer le corps de la requête à cet endroit
upload_pass /upload_endpoint;
# Stocker les fichiers dans ce répertoire
# Le répertoire est haché, les sous-répertoires 0 1 2 3 4 5 6 7 8 9 doivent exister
# c'est-à-dire assurez-vous de créer /u/apps/bugle/shared/uploads_tmp/0 /u /apps/bugle/shared/uploads_tmp/1, etc.
upload_store /tmp/nginxuploads 1;
# Définir les autorisations sur les fichiers téléchargés
upload_store_access user:rw group:rw all:r;
# Définir les champs spécifiés dans le corps de la requête
# cela met le nom de fichier d'origine, le nouveau chemin + nom de fichier et le type de contenu dans les paramètres de la requête
upload_set_form_field $upload_field_name.name "$upload_file_name";
upload_set_form_field $upload_field_name.content_type "$upload_content_type";
upload_set_form_field $upload_field_name.path "$upload_tmp_path";
upload_aggregate_form_field $upload_field_name.size "$upload_file_size";
upload_pass_form_field ".*";
upload_cleanup 400 404 499 500-505;
}
location /upload_endpoint {
proxy_pass http://127.0.0.1:9001;
}
Aucune erreur dans les journaux à part la 404, et cela signifie simplement que le fichier /usr/local/nginx/html/upload n'existe pas. Une idée de ce qui se passe ici ?
/tmp/nginxuploads/0 à /tmp/nginxuploads/9 existent et sont lisibles et inscriptibles par tous.