413 Запрос слишком большой объект - проблема с загрузкой файла


97

Я пытаюсь загрузить файл размером 30 МБ на свой сервер, но он не работает.

  1. Когда я загружаю файл размером 30 МБ, страница загружает « Страница не найдена »

  2. Когда я загружаю файл размером 3 МБ, я получаю сообщение « 413 Request Entity Too Large » с nginx / 0.6.32

Я пытаюсь найти nginx, чтобы увеличить " client_max_body_size ", но не могу найти установленный на моем сервере nginx. Я даже пробовал запустить:

vi /etc/nginx/nginx.conf

или

vi /usr/local/nginx/conf/nginx.conf

чтобы проверить, существует ли файл конфигурации, но я не смог найти его на своем сервере.

Есть ли способ решить эту проблему? Или мне нужно установить nginx на свой сервер.

РЕДАКТИРОВАТЬ:

Я внес все необходимые изменения в свои файлы php.ini,

post_max_size 128M
upload_max_filesize 100M
memory_limit 256M

Спасибо, Раджу


пожалуйста, посмотрите эти ссылки, возможно, вам помогут cyberciti.biz/faq/… rtcamp.com/tutorials/php/increase-file-upload-size-limit
— Ашури

Привет, Мохаммад, я искал nginx, но не нашел его на своем сервере. Я уверен, что nginx не установлен на моем сервере, поэтому я не понимаю, почему я получаю сообщение об ошибке, принадлежащее Nginx
— Раджу Вишвас

сначала вы должны убедиться, что ngix не установлен на вашем сервере, но, если вы полностью уверены, возможно, из соображений безопасности некоторые серверные менеджеры, чтобы сбить с толку хакеров, используют этот трюк
— Ашури

вы пробовали ps aux | grep nginxпроверить, работает ли он?
— rpkamp

Вы пробовали which nginx? Это даст вам местоположение исполняемого файла, а не файла конфигурации, но должно, по крайней мере, подтвердить, установлен ли nginx или нет.
— Дуг Маклин,

Ответы:


119

Источник: http://www.cyberciti.biz/faq/linux-unix-bsd-nginx-413-request-entity-too-large/

Отредактируйте файл conf nginx:

nano /etc/nginx/nginx.conf

Добавьте строку в раздел http:

http {
    client_max_body_size 100M;
}

Не использовать МБ не получится, только М!

Также не забываем перезапустить nginx

systemctl restart nginx

Когда я это делаю, мой 413 превращается в 404. Я использую Amazon Linux на EC2. Также в документации nginx отображается буква «m» в нижнем регистре. nginx.org/en/docs/http/…
— nu everest

Он запрашивает пароль для изменения файла. Но я не помню, как устанавливал. Я что-то упускаю?
— Sooraj

1
Путь для nano должен быть nano /etc/nginx/nginx.conf.
— MaXi32

Сработало для меня, но ПРИМЕЧАНИЕ: если в вашей конфигурации уже есть http { }раздел, добавьте остальное внутри него! Добавление нового http {}раздела не удастся и выдаст "http" directive is duplicateошибку в журнале Nginx.
— jerclarke

42

-в php.ini (внутри /etc/php.ini)

 max_input_time = 24000
 max_execution_time = 24000
 upload_max_filesize = 12000M
 post_max_size = 24000M
 memory_limit = 12000M

-в nginx.conf (внутри / opt / nginx / conf)

client_max_body_size 24000M

Это работает в моем случае


Привет, Арун, проблема с нашим сервером в том, что я не могу найти установленный nginx, но он по-прежнему выдает ошибку nginx
— Раджу Вишвас

найдите nginx внутри / opt или / etc. Внутри nginx найдите папку conf, затем nginx.conf.
— Arun

Если вышеприведенная идея не работает, найдите nginx.conf внутри всего Linux любым инструментом поиска.
— Арун,

max_input_time = 24000, 24000 в миллисекундах?
— Ришаб Аграхари,

1
@RishabhAgrahari Секунды! Это устанавливает максимальное время в секундах. Значение по умолчанию - -1, что означает, что вместо этого используется max_execution_time. Установите 0, чтобы разрешить неограниченное время
— Шон

18

Сначала отредактируйте файл конфигурации Nginx ( nginx.conf)

Место расположения: sudo nano /etc/nginx/nginx.conf

Добавьте следующие коды:

http {
        client_max_body_size 100M;
}

Затем добавьте следующие строки в файл конфигурации PHP ( php.ini)

Место расположения: sudo gedit /etc/php5/fpm/php.ini

Добавьте следующие коды:

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

1
Я открыл свой nginx.confфайл в соответствии с инструкциями, но он был пуст! Я не ожидал этого, но когда я добавил ваш код, он все еще работал ... как я думаю, можно было ожидать, но по какой-то причине я не ожидал, и я был очень счастлив, когда это произошло!
— Эндрю Фокс

8

Пожалуйста, введите файл nginx домена:

nano /etc/nginx/sites-available/domain.set

Добавить в файл этот код

client_max_body_size 24000M;

Если вы получили ошибку, используйте эту команду

nginx -t

8

Я добавляю изменения прямо на свой виртуальный хост вместо глобальной конфигурации nginx, например:

   server {
     client_max_body_size 100M;
     ...
   }

Затем я меняю параметры в php.ini, как в комментариях выше:

   max_input_time = 24000
   max_execution_time = 24000
   upload_max_filesize = 12000M
   post_max_size = 24000M
   memory_limit = 12000M

и что вы не можете забыть, так это перезапустить nginx и php-fpm, в centos 7 это так:

  systemctl restart nginx
  systemctl restart php-fpm

6
sudo nano /etc/nginx/nginx.conf

Затем добавьте строку в раздел http

http {
    client_max_body_size 100M;
}

не используйте только MB M.

systemctl restart nginx

затем для местоположения php

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

на сегодняшний день максимальное использование php 7.0 или выше

sudo nano /etc/php/7.2/fpm/php.ini     //7.3,7.2 or 7.1 which php you use

проверьте те, которые увеличиваются по вашему желанию.

memory_limit = 128M 
post_max_size = 20M  
upload_max_filesize = 10M

перезапустить php-fpm

service php-fpm restart 

4

Предполагая, что вы внесли необходимые изменения в свои файлы php.ini:

Вы можете решить проблему, добавив следующую строку в файл nginx.conf, находящийся по следующему пути:

/etc/nginx/nginx.conf

затем отредактируйте файл с помощью текстового редактора vim следующим образом:

vi /etc/nginx/nginx.conf

и добавьте client_max_body_size с достаточно большим значением, например:

client_max_body_size 20MB;

После этого не забудьте сохранить с помощью :xiили:wq

А затем перезапустите nginx.

Вот и все.

Сработал для меня, надеюсь, это поможет.


2

Я получил загрузку, работающую с вышеуказанными изменениями. Но когда я внес изменения, я начал получать ответ 404 при загрузке файла, который побудил меня продолжить отладку и выяснил, что это проблема с разрешением, проверив nginx error.log

Решение:

Проверьте текущее владение пользователем и группой в / var / lib / nginx.

$ ls -ld /var/lib/nginx

drwx ------. 3 nginx nginx 17 октября 5, 19:31 / var / lib / nginx

Это говорит о том, что возможно несуществующий пользователь и группа с именем nginx владеют этой папкой. Это препятствует загрузке файлов.

В моем случае имя пользователя, указанное в "/etc/nginx/nginx.conf", было

user vagrant; 

Измените владельца папки на пользователя, определенного в nginx.conf, в этом случае vagrant.

$ sudo chown -Rf vagrant:vagrant /var/lib/nginx

Убедитесь, что он действительно изменился.

$ ls -ld /var/lib/nginx
drwx------. 3 vagrant vagrant 17 Oct  5 19:31 /var/lib/nginx

Перезагрузите nginx и php-fpm для большей безопасности.

$ sudo service nginx reload
$ sudo service php-fpm reload

Ошибка отказа в разрешении теперь должна исчезнуть. Проверьте error.log (на основе местоположения error_log в nginx.conf).

$ sudo nano /path/to/nginx/error.log

0

Открыть файл /etc/nginx/nginx.conf Добавить или изменитьclient_max_body_size 0;


0

Использование:

php -i

команду или добавить:

phpinfo();

чтобы получить расположение файла конфигурации.

Обновите эти переменные в соответствии с вашими потребностями и сервером

max_input_time = 24000
max_execution_time = 24000
upload_max_filesize = 12000M
post_max_size = 24000M
memory_limit = 12000M

В Linux вам нужно будет перезапустить службу nginx / apache и phpfpm, чтобы были загружены новые настройки ini. На xampp, ammps вы можете перезапустить их с панели управления, которая поставляется с такими приложениями.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.