"413 Запит надлишкової сутності" в Nginx із набором "client_max_body_size"


54

Я завантажую 26Gb файл, але я отримую:

413 Request Entity Too Large

Я знаю, це пов’язано з client_max_body_size, тому я встановив цей параметр 30000M.

  location /supercap {
    root  /media/ss/synology_office/server_Seq-Cap/;
    index index.html;
    proxy_pass  http://api/supercap;
  }

  location /supercap/pipe {
    client_max_body_size 30000M;
    client_body_buffer_size 200000k;
    proxy_pass  http://api/supercap/pipe;
    client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx;
  }

Але я все одно отримую цю помилку, коли весь файл завантажено.

Відповіді:


69

Змініть файл конфігурації NGINX

sudo nano /etc/nginx/nginx.conf

Пошук цієї змінної: client_max_body_size. Якщо ви знайдете її, просто збільште розмір, наприклад, до 100 млн. Якщо його не існує, ви можете додати його всередину та в кінці http

client_max_body_size 100M;

Перезапустіть nginx, щоб застосувати зміни.

sudo service nginx restart

Змініть файл PHP.ini для обмеження завантаження

Він не потрібен у всіх конфігураціях, але, можливо, вам доведеться також змінити настройки завантаження PHP, щоб гарантувати, що php-конфігурації нічого не виходять за межі.

Якщо ви використовуєте PHP5-FPM, використовуйте наступну команду,

sudo nano /etc/php5/fpm/php.ini

Якщо ви використовуєте PHP7.0-FPM, використовуйте наступну команду,

sudo nano /etc/php/7.0/fpm/php.ini

Тепер знайдіть наступні директиви по черзі

upload_max_filesize
post_max_size

і збільшити його ліміт до 100М, за замовчуванням вони 8М і 2М.

upload_max_filesize = 100M
post_max_size = 100M

Нарешті збережіть його та перезапустіть PHP.

Користувачі PHP5-FPM використовують це,

sudo service php5-fpm restart

Користувачі PHP7.0-FPM використовують це,

sudo service php7.0-fpm restart

Це буде добре працювати !!!


1
чому 100Mb для client_max_body_size в nginx.conf?
user2979409

Ви можете поставити будь-яке значення відповідно до Ваших вимог, але достатньо 100 mb
Sukhjinder Singh

але я завантажую до 30 Гбіт файлів.
user2979409

знайти файл максимального розміру та дозволити його більше, ніж цей файл
Sukhjinder Singh

тож чому client_max_body_size не працює всередині мого / місцезнаходження?
user2979409

9

Якщо ви завантажуєте файли такого розміру, ви, мабуть, просто відключите перевірку розміру тіла:

client_max_body_size 0;

3

Щодо поваги, я не впевнений, чому ви використовуєте http для передачі такої кількості даних. Я схильний робити свої великі передачі за ssh

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"

... що дає мені стиснуту bzip передачу. Але якщо мені потрібно було відновити передачу, я можу використовувати sftp, lftp, навіть rsync. Будь-який із них (або їх похідних чи побратимів) здатний

  1. використовуючи зашифрований канал за бажанням,
  2. відновлення перерваної передачі та
  3. стиснення передачі

Лише одна з них була б для вас можливістю при спробі завантаження через http (а саме, №1, якщо ви були на https).

Я сподіваюсь, що ви подивитесь на будь-яке з перерахованих вище чи кілька інших альтернатив.


Це не має нічого спільного з питанням.
Zenklys

1
Це лише тому, що хлопець передає файли масштабу Blueray через http. Не маючи більш детальної інформації, чому хтось хотів би це зробити, я вважаю, що хлопець, який задає це питання, найкраще подаватиметься, якщо не буде успішно відповісти на питання. Я визнаю, що моє незнання цих деталей є проблемою.
Метт Мерфі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.