Как отредактировать nginx.conf для увеличения размера загружаемого файла

106

Я хочу увеличить количество maximum file sizeзагружаемых материалов.
Проведя небольшое исследование в Интернете, я обнаружил, что вам нужно отредактировать файл nginx.conf.
Единственный способ получить доступ к этому файлу - пройти через Putty и ввести команду:

vi /etc/nginx/nginx.conf

Это откроет файл, но теперь у меня есть 2 вопроса:

  1. Как мне отредактировать этот файл?
  2. Я обнаружил в Интернете, что вам нужно добавить следующую строку кода:

client_max_body_size 8M;

Куда бы я поместил эту строку кода nginx.conf?

Джефф П.
источник

Ответы:

202

Добавить client_max_body_size

Теперь, когда вы редактируете файл, вам нужно добавить строку в серверный блок, например:

server {
    client_max_body_size 8M;

    //other lines...
}

Если вы размещаете несколько сайтов, добавьте его в контекст http следующим образом:

http {
    client_max_body_size 8M;

    //other lines...
}

А также обновите upload_max_filesizeфайл php.ini, чтобы вы могли загружать файлы того же размера.

Сохранение в Vi

Как только вы закончите, вам нужно сохранить, это можно сделать в vi, нажав escклавишу, набрав :wqи вернувшись.

Перезапуск Nginx и PHP

Теперь вам нужно перезапустить nginx и php, чтобы перезагрузить конфиги. Это можно сделать с помощью следующих команд;

sudo service nginx restart
sudo service php5-fpm restart

Или как называется ваша служба php.

Мэтт Берроу
источник
8
Возможно, неплохо было бы добавить его в http {контекст, чтобы все серверы унаследовали его. И убедитесь, что вы настроили свой upload_max_filesizein php.iniв соответствии с настройками nginx. Если вы запускаете Laravel с помощью Homestead / Vagrant, этот файл находится по адресу /etc/php5/fpm/php.ini.
damiani 03
Да, я забыл упомянуть, что использую Laravel Homestead. Итак, я открыл /etc/php5/fpm/php.ini и нашел строку кода «upload_max_filesize = 2M», поэтому я хочу изменить ее так, чтобы «2M» превратилось в «8M». После того, как я внесу это изменение, нужно ли мне просто нажать «Ctrl Z», чтобы выйти из файла, а затем запустить «sudo service nging restart»?
Джефф П.
Вы не нажимаете ctrl-z. Вам нужно сохранить его с помощью vi, нажмите esc, затем введите: wq и нажмите Enter.
Мэтт Берроу
2
Выйдите из редактора, добавьте команду vi к sudo. Вот так; sudo vi /etc/nginx/nginx.conf или sudo vi /etc/php5/fpm/php.ini
Мэтт Берроу
2
sudo nginx -s reloadперезагружает конфигурацию без перезапуска nginx
Vincnetas
12

В случае, если вы используете прокси-сервер nginx в качестве контейнера докеров (например, jwilder / nginx-proxy ), существует следующий способ настройки client_max_body_size(или других свойств):

  1. Создайте собственный файл конфигурации, например, /etc/nginx/proxy.confс правильным значением для этого свойства
  2. При запуске контейнера добавьте его как объем, например -v /etc/nginx/proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro

Лично мне этот способ показался довольно удобным, так как нет необходимости создавать собственный контейнер для изменения конфигураций. Я не связан с ним jwilder/nginx-proxy, просто использовал его в своем проекте, и способ, описанный выше, мне помог. Надеюсь, это поможет и кому-то другому.

Владимир Салин
источник
1
В этом родственном проекте: github.com/evertramos/… (nginx-proxy от jwilder в сочетании с генерацией сертификата от Let's encrypt) есть аккуратный скрипт для этого и эта опция предварительно сконфигурирована (до 100M). Создайте .env из образца; раскомментируйте строку #USE_NGINX_CONF_FILES=true; запустить start.shи наконец docker-compose up. (Я не связан ни с одним из проектов).
glaux
3

Сначала перейдите по пути php.ini

sudo vi /etc/php/7.2/fpm/php.ini

затем следующее изменение

upload_max_filesize = 999M
post_max_size = 999M

затем ESC-->:wq

Теперь, наконец, вставьте эту команду,

sudo systemctl перезапустить php7.2-fpm.service

вы сделали.

Васу Патель
источник
2

Вы можете увеличивать client_max_body_size и upload_max_filesize + post_max_size в течение всего дня. Без настройки времени ожидания HTTP он никогда не будет работать.

// Вам нужно настроить это, и, возможно, также на стороне PHP. client_body_timeout 2min // загрузка файла 1 ГБ

Цифровой человек
источник
Более подробная информация о настройке вашего веб-сервера здесь: doc.owncloud.com/server/admin_manual/configuration/files/…
Digital Human