Как загрузить изображение с помощью NodeJS, Nginx и base64?(413 PayloadTooLargeError: объект запроса слишком большой) - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь загрузить 5 изображений base64 с помощью опции необработанного текста Postman с установленным заголовком application / json.Сервер продолжает возвращать указанную ошибку.Я использую NodeJS за обратным прокси-сервером Nginx.

Я перепробовал все варианты, упомянутые в приведенном ниже коде, включая увеличение пределов до (100M), что, очевидно, не было проблемой.

NodeJS (MAXIMUM_FILE_SIZE_LIMIT = '500mb'):

app.use(bodyParser.urlencoded({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, parameterLimit: 100000, extended: true }));
app.use(bodyParser.json({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, extended: true }));
// app.use(bodyParser.text({ limit: process.env.MAXIMUM_FILE_SIZE_LIMIT, extended:true }));
app.use( bodyParser.text({type : 'application/text-enriched', limit: process.env.MAXIMUM_FILE_SIZE_LIMIT}) );   
app.use( bodyParser.raw({limit: process.env.MAXIMUM_FILE_SIZE_LIMIT}) );   

Nginx
Конфигурация внутри (сервер, http, местоположение):
nginx.conf,
сайты с поддержкой / по умолчанию,
sites-available / default:

client_max_body_size 100M

Я хочу успешно загрузить изображения (5), общий размер которых не превышает 2 МБ.

1 Ответ

0 голосов
/ 28 декабря 2018

Наконец, решение состояло в том, чтобы оставить nginx client_max_body_size 5M; только на nginx.conf, а также с помощью следующих строк в моем коде NodeJS:

app.use(bodyParser.urlencoded({ limit: '5mb', extended: true }));
app.use(bodyParser.json({ limit: '5mb' }));

ОБРАТИТЕ ВНИМАНИЕ !!!
После попытки многих комбинаций проблема, по-видимому, вообще не связана с вышеуказанным.
При использовании команды node для запуска сервера все работало отлично.Но, поскольку я хотел сохранить приложение живым (в случае перезагрузки сервера), я использовал forever.
Навсегда запустил приложение, но, по-видимому, продолжал выдавать ошибку 413 каждый раз, независимо от nginx инастройки узла.
Переключился на PM2, что окончательно решило это.

Удачи!

...