Krijg je 413 Request Entity Too Large bij uploaden? De webserver weigert de grootte. Zo pas je client_max_body_size, LimitRequestBody en de PHP-uploadlimieten aan.
Een 413 betekent dat de inhoud van de aanvraag groter is dan de server wil aannemen. Bijna altijd gaat het om een upload: een foto, video, pdf, back-up of import die via een formulier of beheeromgeving wordt verstuurd. In de huidige HTTP-standaard heet de code 413 Content Too Large; veel servers tonen nog de oude naam Request Entity Too Large.
De weigering komt meestal van de webserver, nog vóórdat PHP of de applicatie het bestand ziet. nginx staat standaard maar een kleine hoeveelheid toe via client_max_body_size; Apache heeft LimitRequestBody. Zit er een proxy, load balancer of CDN vóór de server, dan heeft die vaak een eigen maximum. De kleinste limiet in de keten bepaalt wat er door kan.
Daarachter heeft PHP nog eigen grenzen: upload_max_filesize en post_max_size. Wordt een daarvan overschreden, dan krijg je meestal géén 413 maar een melding van de applicatie, of een formulier dat leeg lijkt aan te komen. Dat behandelen we op upload_max_filesize en post_max_size.
Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.
Comprimeer foto’s of video’s, sla een pdf op met een lagere kwaliteit of splits het in delen. Lukt de upload dan wel, dan weet je dat het puur om de grootte gaat. Vraag de beheerder van de site wat het maximum is als je vaak grote bestanden moet aanleveren.
Kijk in het foutenlog van nginx: daar staat client intended to send too large body met het aantal bytes. Staat er niets in het log van je webserver, dan komt de 413 van een laag ervoor, zoals een proxy, load balancer of CDN.
sudo grep 'too large body' /var/log/nginx/error.log | tail -n 5Zet client_max_body_size in het http-, server- of locationblok. Een waarde in een locationblok gaat vóór de algemene waarde, dus controleer of er geen kleinere instelling dieper in de configuratie staat. Kies een maximum dat past bij wat gebruikers echt uploaden. Test de configuratie en herlaad nginx.
# bijvoorbeeld in het server-blok
client_max_body_size 64m;
sudo nginx -t && sudo systemctl reload nginxIn Apache bepaalt LimitRequestBody het maximum, in bytes. Die kan in de serverconfiguratie, een vhost, een Directory-blok of .htaccess staan. Zoek waar hij is ingesteld en verhoog hem waar nodig. In recente Apache-versies is er ook zonder eigen instelling een standaardgrens.
# 64 MB in bytes
LimitRequestBody 67108864
sudo apachectl configtest && sudo systemctl reload apache2Is de webserver aangepast, controleer dan of PHP het ook toelaat. post_max_size moet minstens zo groot zijn als upload_max_filesize, want het hele formulier telt mee. Hoe en waar je dat instelt, staat op upload_max_filesize en post_max_size.
php -i | grep -E 'upload_max_filesize|post_max_size'Draait er een tweede nginx als reverse proxy vóór de applicatie, dan heeft elke nginx een eigen client_max_body_size. Ook een CDN of load balancer heeft een maximum per aanvraag; bij Cloudflare hangt dat af van het abonnement. Moet er meer door, laat grote uploads dan rechtstreeks naar de server of naar opslag gaan.
Voor heel grote bestanden is één grote aanvraag kwetsbaar: een kleine hapering laat alles mislukken, en limieten in de keten zijn lastig te beheren. Upload in delen (chunked upload) of laat de browser rechtstreeks naar opslag uploaden. Controleer de grootte ook vooraf in de browser, zodat de gebruiker direct een duidelijke melding krijgt.
Let op: Zet limieten niet onbeperkt hoog. Een te ruime limiet maakt het makkelijker om de server met enorme aanvragen te belasten; stem het maximum af op wat je gebruikers werkelijk nodig hebben.
Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.
Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.
Het bestand of formulier dat je verstuurt is groter dan de server toestaat. Meestal is het de limiet van de webserver, zoals client_max_body_size in nginx.
Dan weigert de webserver het al vóór PHP. Verhoog ook client_max_body_size (nginx) of LimitRequestBody (Apache), en controleer een eventuele proxy of CDN ervoor.
In het http-, server- of locationblok van nginx. De meest specifieke instelling geldt, dus een kleinere waarde in een locationblok gaat vóór een grotere in het server-blok.
Nee, dat is de nieuwere naam voor dezelfde statuscode 413 in de HTTP-standaard.
Hulp nodig van een mens? Website-onderhoud · Hosting en onderhoud · Gratis website-scan · Alle oplossingen