Nginx: 413 Request Entity Too Large Error and Solution

by on July 12, 2011 · 17 comments· LAST UPDATED February 18, 2014

in , ,

I'm running nginx as a frond end to php based Apache+mod_fastcgi server. My app lets user upload images upto 2MB in size. When users trying to upload 1.5MB+ size image file using nginx reverse proxy, they are getting the following error on screen:

Nginx 413 Request Entity Too Large

How do I fix this problem and allow image upload upto 2MB in size using nginx web-server working in reverse proxy or stand-alone mode on Unix like operating systems?

Tutorial details
DifficultyEasy (rss)
Root privilegesYes
RequirementsNginx/PHP
Estimated completion time5m
You need to configure both nginx and php to allow upload size.

Nginx configuration

The client_max_body_size directive assigns the maximum accepted body size of client request, indicated by the line Content-Length in the header of request. If size is greater the given one, then the client gets the error "Request Entity Too Large" (413). To fix this issue edit your nginx.conf. Open the Terminal or login to the remote server using ssh client. Type the following command to edit your nginx.conf using a text editor such as vi or joe:
# vi /etc/nginx/nginx.conf
OR
# vi /usr/local/nginx/conf/nginx.conf
Add the following line to http or server or location context to increase the size limit in nginx.conf, enter:

# set client body size to 2M #
client_max_body_size 2M;
 

Save and close the file. Reload the nginx webserver, enter:
# /usr/local/nginx/sbin/nginx -s reload
OR
# /sbin/nginx -s reload
OR use the following on RHEL/CentOS/Debian/Ubuntu Linux:
# service nginx reload

PHP configuration (optional)

Your php installation also put limits on upload file size. Edit php.ini and set the following directives

;This sets the maximum amount of memory in bytes that a script is allowed to allocate
memory_limit = 32M
 
;The maximum size of an uploaded file.
upload_max_filesize = 2M
 
;Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize
post_max_size = 3M
 

Save and close the file. Make sure you reload/restart back-end apache or nginx web server as per your setup. See "PHP Increase Upload File Size Limit" tutorial for more information.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 17 comments… read them below or add one }

1 lowry.shaw August 31, 2011 at 6:34 am

when i use
client_max_body_size 2MB;
there is something wrong:
nginx: [emerg] “client_max_body_size” directive invalid value in conf/nginx.conf

maybe you should use 2m not 2mb

my nginx version:
nginx: nginx version: nginx/1.0.5

Reply

2 Lukasz November 3, 2011 at 10:40 pm
3 grissom January 4, 2012 at 3:02 pm

it should be:
client_max_body_size 2M;

Reply

4 nixCraft January 4, 2012 at 6:58 pm

Thanks for the heads up!

Reply

5 Buminda October 21, 2013 at 1:40 pm

yes , it shoud be client_max_body_size 2M;

Reply

6 Jan August 21, 2012 at 12:24 pm

Thanks, man! Solved my problem!

Reply

7 Morten November 29, 2012 at 5:39 pm

Thanks a lot!!!

Reply

8 Joshua Pinter December 7, 2012 at 5:37 pm

Thanks for this!

Something to note: I had `client_max_body_size` being set in a variety of files in the nginx directory. To quickly see if it is being set (and therefore causing overrides or conflicts) you can use the following line in the nginx directory.

sudo grep -R ‘client_max_body_size’ ./*

Thanks,

Josh

Reply

9 Nick_K May 10, 2013 at 10:22 am

@nixCraft
I would be happy to receive that kind of error (Nginx 413 Request Entity Too Large).

Unfortunately, my browser (Firefox 20) shows me a page with the message “This page contains no data” when someone tries to upload a file more client_max_body_size

I have tried to create a custom page 413 and get’s invoked when client_max_body_size get exceeded to no avail.

Reply

10 rad November 8, 2013 at 7:05 pm

This doc above is wrong, and should be updated

nginx: configuration file /etc/nginx/nginx.conf test failed
$ sudo nginx -t
nginx: [emerg] “client_max_body_size” directive is not allowed here in /etc/nginx/nginx.conf:4
nginx: configuration file /etc/nginx/nginx.conf test failed

Solution: add this to http or server context!

http://wiki.nginx.org/HttpCoreModule#client_max_body_size

Reply

11 nixCraft November 9, 2013 at 6:31 am

The faq has been updated. I appreciate your feedback and post.

Reply

12 Nanhe Kumar February 18, 2014 at 1:03 pm

If you have run bellow command
# /usr/local/nginx/sbin/nginx -s reload
OR
# /sbin/nginx -s reload
And you are getting error No such file or directory
Simply restart your nginx
sudo service nginx restart

Reply

13 Umair March 27, 2014 at 11:03 pm

Bro i am unable to save nginx file,how to save nginx file after setting limit,any special method?

Reply

14 Bill May 3, 2014 at 5:47 am

how about some directions that a common person can understand.
I have 413 entity to large and can not get it off screen
how do i do this to remove it.
Thanks

Reply

15 Theodis Butler May 3, 2014 at 5:50 pm

This is only if you have a problem with a web application that you host on your own server.

If it is on a website that is not under your control, then you need to contact the webmaster of that web site.

Reply

16 Felix May 21, 2014 at 10:03 am

Thx a lot. client_max_body_size was a right way.

Reply

17 Guy September 16, 2014 at 7:43 pm

somebody please make a step by step video.

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , , , , ,

Previous Faq:

Next Faq: