Я пытаюсь настроить nginx для управления загрузкой файлов для приложения node.js. я следовал этот учебник: https://coderwall.com/p/swgfvw/nginx-direct-file-upload-without-passing-them-through-backendЗагрузка файла с помощью nginx и node.js
Я сделал это со следующей конфигурацией:
server {
listen 80;
server_name example.com;
location/{
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /upload {
auth_request /upload/authenticate;
limit_except POST { deny all; }
client_body_temp_path /tmp/;
client_body_in_file_only on;
client_body_buffer_size 128K;
client_max_body_size 1000M;
proxy_pass_request_headers on;
proxy_set_header X-FILE $request_body_file;
proxy_set_body off;
proxy_redirect off;
proxy_pass http://localhost:3000/uploads;
}
location /upload/authenticate {
internal;
proxy_set_body off;
proxy_pass http://localhost:3000/auth/isAuthenticated;
}
}
И я сделал тест с Почтальон следующим образом:
Запросе сообщению :
POST/upload HTTP/1.1 Хост: localho й Cache-Control: нет кэша
---- WebKitFormBoundaryE19zNvXGzXaLvS5C Content-Disposition: форм-данных; Name = "изображение"; имя файла = "pic.jpg" Content-Type: изображение/JPEG
---- WebKitFormBoundaryE19zNvXGzXaLvS5C
Он отлично работает и Nginx загружает изображение в каталоге/TMP. Проблема заключается в том, что файл переименовывается как «0000000001», и когда я переименую его вручную как «pic.jpg» и попытаюсь открыть его, подсказки зрителя «Ошибка интерпретации файла изображения JPEG (Не файл JPEG: начинается с 0x2d 0x2d) ».
И когда я запускаю команду файла (файл pic.jpg), она возвращает: «pic.jpg: data».
У вас есть попытка сохранить его в другой папке, а не в temp, а затем попробовать переименовать его? –
Спасибо за ответ, да, я сделал, и у меня такая же проблема. – sromdhane