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.