Home > Mobile >  upload a large centos / nginx file
upload a large centos / nginx file

Time:10-28

Good morning, I have a problem for some time that i don't know how to solve.

From a Spring application i am trying to upload a file to the server. Everything is fine, except when the file is larger than 200MB. There, the application returns a 413 .. sometimes simply connection timeout.. The server is Centos 7 and there is Nginx underneath. I tried running the client_max_body_size but it doesn't matter. Anyone know what the problem might be?

These are my configuration's files

application.properties:

spring.servlet.multipart.maxFileSize=-1
spring.servlet.multipart.maxRequestSize=-1
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=-1
spring.servlet.multipart.max-request-size=-1

/etc/nginx/nginx.conf:

http {
      include       /etc/nginx/mime.types;
      default_type  application/octet-stream;
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

      access_log  /var/log/nginx/access.log  main;
      sendfile        on;
      #tcp_nopush     on;

      keepalive_timeout  3000;

      gzip  on;

      include /etc/nginx/conf.d/*.conf;

      client_max_body_size 500M;

      server{

           client_max_body_size 0;

           location /upload {

                   client_max_body_size  500M;

                   return 201 $request_body_file;
          }

          location / {

                   client_max_body_size 500M;
          }
      }

  }

/etc/php.ini:

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

CodePudding user response:

You need to change the Nginx server settings by modifying the file nginx.conf. Look for the directive client_max_body_size in this file and change the value (in megabytes) to the maximum file size you prefer. Save the file, and reload Nginx to see the change.

CodePudding user response:

Already done. I put client_max_body_size everywhere, but it has no effect

/etc/nginx:

  drwxr-xr-x 2 root root 4096 Oct 26 16:05 conf.d
  -rw-r--r-- 1 root root 1007 Oct 29  2020 fastcgi_params
  -rw-r--r-- 1 root root   44 Feb  9  2021 htpasswd
  -rw-r--r-- 1 root root 2837 Oct 29  2020 koi-utf
  -rw-r--r-- 1 root root 2223 Oct 29  2020 koi-win
  -rw-r--r-- 1 root root 5231 Oct 29  2020 mime.types
  lrwxrwxrwx 1 root root   29 Feb  9  2021 modules -> ../../usr/lib64/nginx/modules
  -rw-r--r-- 1 root root  973 Oct 27 09:09 nginx.conf
  -rw-r--r-- 1 root root  636 Oct 29  2020 scgi_params
  drwxr-xr-x 2 root root 4096 Oct 27 11:12 sites-avaiable
  -rw-r--r-- 1 root root  664 Oct 29  2020 uwsgi_params
  -rw-r--r-- 1 root root 3610 Oct 29  2020 win-utf
  -rw-r--r-- 1 root root 1010 Feb  9  2021 zeppelin_proxy.conf
  -rw-r--r-- 1 root root  910 Jun 30 12:53 zeppelin_proxy_local.conf

nginx.conf:

 user  nginx;
  worker_processes  1;

  error_log  /var/log/nginx/error.log warn;
  pid        /var/run/nginx.pid;


  events {
      worker_connections  1024;
  }


  http {
      include       /etc/nginx/mime.types;
      default_type  application/octet-stream;
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

      access_log  /var/log/nginx/access.log  main;
      sendfile        on;
      #tcp_nopush     on;

      keepalive_timeout  300000;

      gzip  on;

      include /etc/nginx/conf.d/*.conf;

      client_max_body_size 5000M;

      proxy_read_timeout 3000;
      proxy_connect_timeout 3000;
      proxy_send_timeout 3000;

      server{

           client_max_body_size 5000M;

           location /upload {

                   client_max_body_size  5000M;

                   return 201 $request_body_file;
          }

          location / { 
            client_max_body_size 5000M;
          }

        proxy_read_timeout 3000;
        proxy_connect_timeout 3000;
        proxy_send_timeout 3000;
      }
  }

Service:

systemctl restart nginx and systemctl reload nginx

Upload file greater a 200MB and: enter image description here

  • Related