I am getting the following error when trying to upload file using Nginx web server:
2018/01/21 12:19:23 [error] 375#375: *25019 client intended to send too large body: 3881539 bytes, client: 188.8.131.52, server: sxi.io, request: “POST /cms/wp-admin/async-upload.php HTTP/2.0”, host: “sxi.io”, referrer: “https://sxi.io/cms/wp-admin/post.php?post=&action=edit”
How do I fix this problem and allow file uploads upto 10MB?
The client_max_body_size directive in Nginx web server sets the maximum allowed the size of the client request body, specified in the “Content-Length” request header field. If the size of a request exceeds the configured value, the 413 (Request Entity Too Large) error returned to the client. You need to configure both nginx and php (or other app) to allow upload size. Let us see how to fix client intended to send too large bod in Nginx server.
How to fix client intended to send too large body error in Nginx
First you need to edit the /etc/nginx/nginx.conf file by typing the vi command:
$ sudo vi /etc/nginx/nginx.conf
In http (server/location) section add the following directive to set the maximum allowed size in 10MB:
Save and close the file.
Test nginx configuration for error
Run the following command:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
If no error means, restart the nginx web server.
$ sudo systemctl reload nginx
$ sudo service nginx reload
Verify configuration by uploading a large file. Make sure you watch nginx error log too:
$ sudo tail -f /var/log/nginx/error.log
How to configure php to accept upload upto 10MB
Edit your php.ini file and make sure the following two line present in it:
$ sudo vi /etc/php.ini
Append or edit as follows:
Save and close the file. Restart your Nginx PHP-fpm service:
$ sudo systemctl restart php-fpm
$ sudo /etc/init.d/php-fpm restart
# /usr/local/etc/rc.d/php-fpm restart
Now upload a file and test it.
In short you need the following line in nginx.conf and php.ini using the grep command/egrep command/tail command:
$ grep client_max_body_size /etc/nginx/options.conf
$ egrep 'upload_max_filesize|post_max_size' /etc/php/7.0/fpm/conf.d/99-custom.ini
$ tail -f /var/log/nginx/error.log
$ tail -f /var/log/nginx/php-fpm-error.log