Разное

Nginx upload max filesize: Limit File Upload Size in NGINX —

19.02.2023

What is the maximum file size we can upload on discourse? — support

Kanishk_Jaswal (Kanishk Jaswal)

#1

Hi all,

Curious to know what is the maximum allowed file size that can be uploaded on the platform?

image808×110 10.4 KB

Currently, we have it at 184 MB. However, when I try to upload a file of 40-50 MB it fails to upload.

Thanks in advance.
Kanishk

merefield (Robert)

#2

You probably need to change your nginx config too

I guess the new update added a hint about fixing this, so here is the full guide for those who face the same issue… it’s all about nginx: 1.
Go to nginx folder: cd /etc/nginx 2. Add this line to your nginx.conf file: http { … client_max_body_size 4M; } This will allow nginx to accept files with a max size of 4 megabytes. 3. Restart nginx: If you’re paranoid like me use run systemctl restart nginx Or simply send the nginx restart signal by running nginx -s reload

4 Likes

Ivan_Rapekas

#3

Sorry for bumping this topic. I tried everything to change max upload size but my instance allows only 1 (one) mb to attach. I played with 10, 20mb and defaults.

I got client_max_body_size 100m;:

1. using custom command `sed -i 's/client_max_body_size 10m;/client_max_body_size 100m;/g' /etc/nginx/conf.d/discourse.conf`
2. using param `upload_size: 100m` in app. yml
3. by hands inside the container

1 and 2 — I rebuilt app, 3 — reload nginx inside container.

This is a fresh installation, only official plugins. Custom things are: Office 365 login and self-signed certificate (because the server is located inside intranet, and Office 365 login requires https). Everything works: login, emailing, answering by email. But attachment size is about 1 mb max (both files and pictures). I allow

* for filetypes. I have external proxy Nginx with the same setting om 100mb body size.

I really confused. I’ve been using Discourse for 4 years. Do I have incorrect settings or conflicts? Could somebody navigate me what to check first please?

Kanishk_Jaswal (Kanishk Jaswal)

July 16, 2021, 9:56am

#5

Hi @merefield,

@Ivan_Rapekas is right. It just doesn’t work. Some backend restriction that just doesn’t allow us to increase upload size of a file.

ondrej

#6

If you are on managed hosting, you should contact your hosting provider to change this setting. The below instructions only apply if you self host your own instance of Discourse. Here is what you need to do to allow more than 10mb for attachments upload. Connect to your server via SSH cd /var/discourse/ nano containers/app.yml Scroll down where it says db_default_text_search_config under params Add upload_size: 20m below db_default_text_search_config params: db_defaul…

Have you read through this?

2 Likes

merefield (Robert)

July 16, 2021, 11:01am

#7

Yup that’s a better solution as imagine nginx config gets rebuilt every time which might be why the configuration is not persisted if you amend it directly

Initially (inside container):

image861×51 14. 7 KB

Update app.yml to :

Post rebuild:

image859×53 23.7 KB

So perhaps that was your problem @Kanishk_Jaswal , it was being reset each rebuild?

2 Likes

Ivan_Rapekas

#8

ondrej:

Have you read through this?

Sure. I researched all relevant topics. The strange thing is 1mb size. It would enough 10mb for me, but I can’t reach this.

merefield:

rebuilt every time

Thanks for this point, I checked it — seems settings are ok…

1 Like

Benjamin_D (Benjamin Decotte)

#9

Ivan_Rapekas:

The strange thing is 1mb size

indeed, and you said earlier “about” 1mb, even weirder.

Ivan_Rapekas:

the server is located inside intranet

Any possibility of an unusual firewall/router/network/vpn setting ? Does the app give you an error, or does the upload fail silently?

1 Like

Ivan_Rapekas

#10

Benjamin_D:

Does the app gives you an error, or does the upload fails silently?

Thank you for the support. I realized that external proxy might have incorrect body size setting. Just checked the log…

изображение1605×117 16 KB

Seems that’s my fault. Hope I’ll fix it soon and return the correct setting for external Nginx.

2 Likes

Ivan_Rapekas

#11

Thanks to all.

So, I have Nginx in front of Discourse. It has configs:

/etc/nginx/nginx.conf (default) /etc/nginx/conf.d/discourse.conf (custom)

Both configs have server{} sections. First I put client_max_body_size 100m; in custom config. Actually the setting did not work, but I did not check proxy logs.

When I moved client_max_body_size 100m; to default config (parent config), the problem resolved.

So, Changing Max Attachment Size article is actual. The root cause was in external proxy setting, outside of Discourse which is the best .

4 Likes

system (system) closed

#12

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

Как ограничить размер загружаемых файлов в Nginx

В нашей последней статье мы объяснили об ограничении размера загружаемого пользователем файла в Apache. В этой статье мы объясним, как ограничить размер загружаемого пользователем файла в Nginx . Ограничение размера загружаемого файла полезно для предотвращения некоторых типов атак типа «отказ в обслуживании» (DOS) и многих других связанных с этим проблем.

По умолчанию Nginx имеет ограничение 1 МБ на загрузку файлов. Чтобы установить размер загружаемого файла, вы можете использовать директиву client_max_body_size , которая является частью модуля Nginx ngx_http_core_module . Эта директива может быть установлена ​​в контексте http , server или location .

Устанавливает максимально допустимый размер тела запроса клиента, указанный в поле заголовка запроса « Content-Length ». Вот пример увеличения лимита до 100 МБ в файле /etc/nginx/nginx.conf .

Установите в http-блоке , который влияет на все серверные блоки ( виртуальных хостов ).

 http {
    ...
    client_max_body_size  100M  ;
}
 

Устанавливается в блоке сервера , который влияет на определенный сайт/приложение.

 сервер {
    ...
    client_max_body_size  100M  ;
}
 

Набор в блоке , который влияет на конкретный каталог (загрузки) на сайте/приложении.

 местоположение/загрузки {
    ...
    client_max_body_size  100M  ;
}
 

Сохраните файл и перезапустите веб-сервер Nginx, чтобы применить последние изменения, используя следующую команду.

 # перезапуск systemctl nginx #systemd
# перезапуск службы nginx #sysvinit
 

После сохранения изменений и перезапуска HTTP-сервера, если размер в запросе превышает настроенное значение 100MB , клиенту возвращается ошибка 413 (Request Entity Too Large) .

Примечание : Вы должны иметь в виду, что иногда браузеры могут неправильно отображать эту ошибку. А установка значения (размера) на 0 отключает проверку размера тела запроса клиента.

Вам также могут быть интересны следующие статьи, посвященные администрированию веб-сервера Nginx.

  1. Как изменить порт Nginx в Linux
  2. Как скрыть версию сервера Nginx в Linux
  3. ngxtop — мониторинг файлов журнала Nginx в режиме реального времени в Linux
  4. Как контролировать производительность Nginx с помощью Netdata
  5. Как включить страницу состояния NGINX

Ссылка : документация ngx_http_core_module

Вот и все! В этой короткой статье мы объяснили, как ограничить размер загружаемого пользователем файла в Nginx. Вы можете поделиться своими мыслями с нами через форму комментариев ниже.

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, на TecMint, вам следует подумать:

TecMint — это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! искать или просматривать тысячи опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, пожалуйста, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Как увеличить размер загружаемого файла в NGINX

По умолчанию NGINX поддерживает максимальный размер загружаемого файла 1 Мб. Если пользователи загружают файлы большего размера, они получат сообщение об ошибке «413: Request Entity Too Large». Вот как можно увеличить размер загружаемого файла в NGINX, чтобы решить эту проблему.

 

Как увеличить размер загружаемого файла в NGINX

Вот шаг, чтобы увеличить размер загружаемого файла в NGINX. Мы будем использовать директиву client_max_body_size , чтобы установить максимальный размер загружаемого файла NGINX. Вы можете разместить client_max_body_size директива в http , server или location .

 

1. Откройте файл конфигурации NGINX

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

 $ sudo /etc/nginx/nginx.conf
 

Дополнительная информация: Как скрыть версию и имя сервера NGINX

 

2. Увеличьте размер загружаемого файла в NGINX

Предположим, вы хотите увеличить размер загружаемого файла до 50 МБ на всем сайте. Итак, добавьте строку client_max_body_size 50M до http блок. Вот пример:

 http{
   ...
   client_max_body_size 50M;
   . ..
}
 

Дополнительное прочтение : Как настроить NGINX Load Balancer

 

Предположим, вы хотите увеличить лимит загрузки файлов только для HTTPS-запросов, но не для HTTP-запросов. В этом случае строка client_max_body_size 50M до блокирует сервер , который прослушивает HTTPS-порт 443, но не блокирует сервер, который прослушивает порт 80.

 сервер{
  слушать 80;
  ...
}
сервер {
  слушать 443;
  ...
}
 

Вы также можете использовать описанный выше подход, если хотите увеличить размер загружаемого файла только для определенного веб-сайта/домена/субдомена/приложения.

 

Предположим, вы хотите увеличить размер загружаемого файла для определенной директивы/URL. В этом случае вы можете добавить строку client_max_body_size 100M. Допустим, вы хотите увеличить размер загружаемого файла для /uploads папка

 местоположение / загрузка {
    ...
    client_max_body_size 50M;
} 

Дополнительная информация: как перенаправить подпапку на поддомен в NGINX

 

3.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *