HTTP Statuscode 413 Payload Too Large: Was der Fehler bedeutet und wie du ihn behebst
- HTTP & Statuscodes
- Jason Carter
Wenn du versuchst eine Datei auf deine Website hochzuladen und plötzlich eine Fehlermeldung mit dem HTTP-Statuscode 413 erhältst, liegt das Problem meist nicht bei dir oder deiner Datei sondern an den Größenlimits deines Servers. Dieser Fehler tritt auf wenn die Daten die du sendest größer sind als das Maximum das dein Webserver akzeptiert. Das betrifft nicht nur Website-Betreiber die Medien hochladen sondern auch Entwickler die mit APIs arbeiten.
Der 413-Fehler gehört zur Familie der Client-Fehler und signalisiert dass deine Anfrage technisch korrekt ist die Nutzlast jedoch zu groß ausfällt. In der Praxis bedeutet das: Du kannst keine großen Backups einspielen, keine hochauflösenden Videos hochladen oder umfangreiche Formulardaten absenden. Die gute Nachricht ist dass sich dieses Problem in den meisten Fällen durch gezielte Anpassungen der Serverkonfiguration lösen lässt.
Dieser Artikel erklärt dir die technischen Hintergründe des 413-Fehlers, zeigt dir wo in deiner Hosting-Umgebung die Limits gesetzt sind und liefert konkrete Lösungsschritte für Apache, Nginx, PHP, IIS und WordPress. Du erfährst außerdem welche Sicherheitsaspekte du beachten solltest und wann alternative Lösungen sinnvoller sind als einfach nur die Limits zu erhöhen.
Was bedeutet der HTTP-Statuscode 413 genau
Der Statuscode 413 ist ein HTTP-Client-Fehler aus der 4xx-Familie. Er zeigt an dass die Anfrage die dein Browser oder eine Anwendung an den Server sendet technisch korrekt aufgebaut ist die übertragene Datenmenge jedoch das konfigurierte Limit überschreitet. Der Server lehnt die Verarbeitung ab weil er entweder nicht bereit oder nicht fähig ist eine so große Nutzlast zu verarbeiten.
Definition und offizielle Bezeichnung
Die offizielle Bezeichnung des Statuscodes hat sich über die Jahre entwickelt. In der aktuellen HTTP-Spezifikation RFC 9110 aus dem Jahr 2022 lautet der Name „Content Too Large“. Früher war die Bezeichnung „Payload Too Large“ gebräuchlich und noch davor hieß der Fehler „Request Entity Too Large“ gemäß RFC 7231. Alle drei Namen beschreiben dasselbe Problem: Die Anfrage-Nutzlast ist zu groß.
In der Praxis begegnen dir alle drei Bezeichnungen noch heute. Viele Webserver und Anwendungen verwenden weiterhin die älteren Namen in ihren Fehlermeldungen. Das liegt daran dass die Implementierungen oft auf älteren RFC-Versionen basieren. Für dich als Website-Betreiber ist wichtig zu wissen dass alle drei Bezeichnungen denselben Fehlercode 413 meinen.
Was bedeutet Payload oder Nutzlast konkret
Der Begriff „Payload“ oder Nutzlast bezeichnet alle Daten die im Body einer HTTP-Anfrage übertragen werden. Das umfasst hochgeladene Dateien wie Bilder, Videos oder PDF-Dokumente. Auch Formulardaten die du über ein Kontaktformular oder eine Registrierung absendest gehören zur Nutzlast. Bei APIs sind es JSON- oder XML-Daten die zwischen Client und Server ausgetauscht werden.
Wenn du ein 50 MB großes Backup-File über das WordPress-Dashboard hochlädst, ist diese Datei die Nutzlast deiner HTTP-Anfrage. Versucht ein Fotograf ein 15 MB großes hochauflösendes Bild in seine Portfolio-Website einzufügen, bildet auch dieses Bild die Payload. Bei einer E-Commerce-Plattform können Produktkataloge mit hunderten Artikeln als JSON-Datei mehrere Megabyte groß werden.
Einordnung in die HTTP-Fehlerklassen
Der Statuscode 413 gehört zur 4xx-Klasse der HTTP-Statuscodes. Diese Klasse umfasst alle Client-Fehler bei denen das Problem auf Seiten des anfragenden Systems liegt. Das unterscheidet 413 grundlegend von 500er-Fehlern die auf Serverprobleme hinweisen. Bei einem 413-Fehler funktioniert der Server korrekt die Anfrage entspricht jedoch nicht den konfigurierten Vorgaben.
Wichtig ist die Abgrenzung zu verwandten Fehlercodes. Der Code 414 „URI Too Long“ tritt auf wenn die URL selbst zu lang ist, nicht der Request-Body. Bei 431 „Request Header Fields Too Large“ sind die HTTP-Header zu umfangreich. Der 413-Fehler bezieht sich ausschließlich auf die Größe des Request-Body also die eigentlichen Nutzdaten die übertragen werden sollen.
Warum tritt der 413-Fehler auf deiner Website auf
Die Ursachen für einen 413-Fehler liegen fast immer in der Konfiguration deiner Hosting-Umgebung. Server setzen Größenlimits aus verschiedenen Gründen: Schutz vor Überlastung, Sicherheit gegen Angriffe und effiziente Ressourcennutzung. Wenn du verstehst wo in deinem Setup diese Limits gesetzt sind, kannst du gezielt die richtige Stellschraube anpassen.
Datei-Uploads über Formulare und CMS
Die häufigste Ursache für 413-Fehler sind Datei-Uploads über Content-Management-Systeme. Beim Hochladen von Bildern in die WordPress-Medienbibliothek, beim Einspielen von Theme- oder Plugin-Dateien oder beim Versenden von Anhängen über Kontaktformulare stößt du schnell an Grenzen. Auch Backup-Plugins die große Sicherungsdateien erstellen und hochladen lösen oft diesen Fehler aus.
Standard-Limits bei Shared-Hosting-Tarifen liegen typischerweise zwischen 2 und 8 MB. Diese Werte sind für einfache Websites mit kleinen Bildern ausreichend, reichen jedoch nicht für moderne hochauflösende Fotos oder Videos. Managed WordPress Hosting bietet oft großzügigere Limits von 128 MB oder mehr, da die Anbieter wissen dass WordPress-Nutzer regelmäßig größere Dateien handhaben müssen.
Große API-Anfragen und JSON-Payloads
Bei Websites mit API-Anbindungen entstehen 413-Fehler durch große JSON- oder XML-Bodies. Webshops die Produktdaten mit externen Systemen synchronisieren, SaaS-Anwendungen die Batch-Requests verarbeiten oder Headless-CMS-Implementierungen mit REST-API-Integrationen senden oft umfangreiche Datenstrukturen. Ein Produktkatalog mit tausenden Artikeln kann als JSON-Datei schnell mehrere Megabyte groß werden.
API-Gateways setzen eigene Limits. Apigee beispielsweise begrenzt Request-Payloads standardmäßig auf 10 MB. Wenn eine Anwendung versucht größere Datenmengen in einer einzelnen Anfrage zu übertragen, antwortet das Gateway mit einem 413-Fehler. Für Entwickler bedeutet das: Entweder die Payload aufteilen oder die Gateway-Konfiguration anpassen.
Multi-Layer-Limits in deiner Hosting-Architektur
Eine moderne Hosting-Architektur besteht aus mehreren Schichten und jede kann eigene Größenlimits setzen. Deine Anfrage durchläuft zunächst einen Webserver wie Apache oder Nginx. Danach erreicht sie den PHP-Interpreter oder einen anderen Application-Server. Davor kann ein Reverse-Proxy geschaltet sein. Nutzt du ein CDN wie Cloudflare oder eine Web Application Firewall, fügen diese weitere Limit-Ebenen hinzu. Bei API-basierten Architekturen kommt noch ein API-Gateway dazu.
Das Problem: Ein Upload muss alle diese Ebenen erfolgreich passieren. Selbst wenn dein PHP-Limit auf 100 MB steht, kann ein Nginx-Limit von 10 MB den Upload bereits vorher blockieren. Umgekehrt hilft es nichts wenn Nginx 500 MB erlaubt PHP jedoch nur 8 MB akzeptiert. Du musst systematisch alle Ebenen prüfen und aufeinander abstimmen.
So erkennst du wo das Limit in deinem Hosting gesetzt ist
Bevor du Konfigurationen änderst, solltest du herausfinden welche Komponente deines Setups das Limit setzt. Eine gezielte Diagnose spart Zeit und verhindert dass du an der falschen Stelle ansetzt.
Server-Logs und Error-Logs prüfen
Server-Logs liefern dir die konkretesten Hinweise auf die Ursache eines 413-Fehlers. Bei Apache findest du relevante Einträge in der Datei error.log, bei Nginx ebenfalls in error.log und PHP schreibt seine Fehler in php_errors.log. Die genauen Pfade hängen von deiner Distribution und Konfiguration ab, typischerweise liegen sie unter /var/log/apache2/, /var/log/nginx/ oder /var/log/php/.
Eine typische Fehlermeldung in Nginx sieht so aus: „client intended to send too large body“. Apache meldet „Request Entity Too Large“ oder gibt direkt den Statuscode 413 aus. PHP-Logs zeigen Meldungen wie „POST Content-Length exceeds the limit“. Diese Einträge verraten dir welche Komponente die Anfrage abgelehnt hat und oft auch welches konkrete Limit überschritten wurde.
Aktuelle Limits deines Servers ermitteln
Um die aktuellen PHP-Limits zu ermitteln, erstellst du eine einfache phpinfo()-Datei. Lege eine Datei mit dem Namen info.php im Root-Verzeichnis deiner Website an und füge folgenden Code ein: <?php phpinfo(); ?>. Rufe diese Datei über deinen Browser auf und suche nach den Direktiven upload_max_filesize, post_max_size und memory_limit. Diese drei Werte bestimmen wie große Dateien du hochladen kannst.
Für Webserver-Limits musst du die Konfigurationsdateien einsehen. Bei Nginx findest du die Einstellung client_max_body_size in der nginx.conf oder in den site-spezifischen Konfigurationsdateien unter /etc/nginx/sites-available/. Apache nutzt die Direktive LimitRequestBody in httpd.conf oder apache2.conf. Viele Hosting-Panels wie cPanel oder Plesk zeigen diese Werte auch in ihrer Oberfläche an.
Test-Uploads durchführen
Erstelle Testdateien mit 5 MB, 10 MB, 25 MB und 50 MB Größe. Versuche diese nacheinander hochzuladen und notiere bei welcher Größe der 413-Fehler auftritt. So ermittelst du das exakte Limit ohne in Konfigurationsdateien suchen zu müssen.
Nutze die Entwicklertools deines Browsers für detaillierte Informationen. Öffne den Network-Tab in den Browser-Entwicklertools bevor du einen Upload startest. Nach dem fehlgeschlagenen Upload siehst du die Server-Antwort inklusive Status-Code und möglicherweise zusätzliche Header-Informationen. Manche Server senden einen Retry-After-Header oder geben in der Antwort Hinweise auf das konfigurierte Limit.
Nginx Konfiguration anpassen für größere Uploads
Nginx ist einer der meistgenutzten Webserver in modernen Hosting-Umgebungen. Besonders bei VPS und Cloud-Hosting hast du direkten Zugriff auf die Nginx-Konfiguration. Die zentrale Direktive für Upload-Limits heißt client_max_body_size und lässt sich flexibel anpassen.
Die Konfigurationsdatei findest du üblicherweise unter /etc/nginx/nginx.conf für globale Einstellungen oder in den site-spezifischen Dateien unter /etc/nginx/sites-available/. Öffne die relevante Datei mit einem Texteditor und suche nach einer bestehenden client_max_body_size-Direktive. Falls keine vorhanden ist, fügst du sie im http-, server- oder location-Block hinzu. Die Syntax ist einfach: client_max_body_size 50M; setzt das Limit auf 50 Megabyte.
Der Standard-Default in Nginx liegt bei nur 1 MB, was für moderne Websites viel zu niedrig ist. Für einen typischen Blog oder eine Unternehmenswebsite sind 10 bis 50 MB sinnvoll. Medien-intensive Websites mit Video-Uploads benötigen 100 bis 500 MB. Werte über 1 GB solltest du nur in Spezialfällen setzen, da sie erhebliche Ressourcen binden und das Risiko von DoS-Angriffen erhöhen.
Nach der Änderung musst du Nginx neu laden oder neu starten. Mit dem Befehl sudo nginx gefolgt von der Option t prüfst du zunächst ob die Konfiguration syntaktisch korrekt ist. Zeigt der Test keine Fehler, lädst du Nginx mit sudo systemctl reload nginx neu. Bei schwerwiegenden Fehlern in der Konfiguration kann Nginx den Start verweigern, deshalb ist der Syntax-Test wichtig.
Beachte dass zu hohe Werte nicht nur Speicher und Bandbreite beanspruchen sondern auch die Verarbeitungszeit erhöhen. Ein Angreifer könnte versuchen durch viele gleichzeitige große Uploads deinen Server zu überlasten. Setze die Werte daher so hoch wie nötig jedoch so niedrig wie möglich. Kombiniere die Einstellung mit Rate-Limiting und anderen Sicherheitsmaßnahmen.
Apache Konfiguration für höhere Upload-Limits anpassen
Apache ist besonders bei Shared-Hosting und traditionellen Hosting-Umgebungen verbreitet. Die Anpassung der Upload-Limits erfolgt über verschiedene Direktiven und Konfigurationsdateien. Je nach deinem Zugriffslevel stehen dir unterschiedliche Methoden zur Verfügung.
LimitRequestBody Direktive
Die Apache-Direktive LimitRequestBody legt die maximale Größe des Request-Body in Bytes fest. Du kannst sie in der Hauptkonfigurationsdatei httpd.conf oder apache2.conf setzen, in VirtualHost-Konfigurationen oder in Directory-Blöcken. Der Wert 0 bedeutet unbegrenzt, was jedoch aus Sicherheitsgründen nicht empfohlen wird.
Ein Beispiel: LimitRequestBody 52428800 erlaubt Request-Bodies bis 50 MB. Die Angabe erfolgt immer in Bytes, deshalb musst du umrechnen. 1 MB entspricht 1048576 Bytes, 10 MB sind 10485760 Bytes und 100 MB entsprechen 104857600 Bytes. Für eine übersichtliche Konfiguration kannst du Kommentare hinzufügen die den Wert in MB angeben.
Anpassung via htaccess-Datei
Für Shared-Hosting-Nutzer ohne Root-Zugriff ist die .htaccess-Datei oft der einzige Weg zur Konfiguration. Diese Datei liegt im Root-Verzeichnis deiner Website und überschreibt bestimmte Server-Einstellungen. Nicht alle Hoster erlauben .htaccess-Overrides für alle Direktiven, viele unterstützen jedoch PHP-Werte-Anpassungen.
In der .htaccess-Datei kannst du PHP-Direktiven mit php_value setzen. Füge folgende Zeilen hinzu: php_value upload_max_filesize 50M, php_value post_max_size 50M und php_value memory_limit 128M. Diese Methode funktioniert nur wenn Apache mit mod_php läuft. Bei PHP-FPM oder anderen PHP-Handlern musst du alternative Wege nutzen.
Server-weite Konfiguration
Nutzer mit Root-Zugriff auf VPS oder dedizierte Server können die Limits serverweit setzen. Öffne die Hauptkonfigurationsdatei, bei Debian/Ubuntu ist das /etc/apache2/apache2.conf, bei CentOS/RHEL /etc/httpd/conf/httpd.conf. Füge die LimitRequestBody-Direktive im gewünschten Kontext hinzu.
Du kannst zwischen globalen Einstellungen und VirtualHost-spezifischen Konfigurationen unterscheiden. Eine globale Einstellung gilt für alle Websites auf dem Server. VirtualHost-spezifische Einstellungen erlauben dir unterschiedliche Limits für verschiedene Domains. Nach Änderungen an der Hauptkonfiguration startest du Apache mit sudo systemctl restart apache2 oder sudo systemctl restart httpd neu.
PHP Upload-Limits erhöhen für deine Website
PHP-Limits sind oft die eigentliche Ursache für 413-Fehler bei WordPress und anderen PHP-basierten CMS. Selbst wenn dein Webserver große Anfragen akzeptiert, blockiert PHP den Upload wenn die PHP-spezifischen Grenzen überschritten werden. Drei zentrale Direktiven bestimmen was möglich ist.
Die wichtigsten PHP-Direktiven
Die Direktive upload_max_filesize legt fest wie groß eine einzelne hochgeladene Datei maximal sein darf. Der Wert post_max_size bestimmt die Gesamtgröße aller POST-Daten inklusive aller Formulardaten und Dateien. Dieser Wert sollte immer größer sein als upload_max_filesize, da POST-Requests neben der Datei auch andere Daten enthalten. Die Direktive memory_limit definiert wie viel Arbeitsspeicher ein PHP-Script maximal nutzen darf und sollte größer sein als post_max_size.
Die logische Hierarchie ist wichtig: memory_limit > post_max_size > upload_max_filesize. Ein sinnvolles Beispiel wäre upload_max_filesize = 50M, post_max_size = 60M und memory_limit = 128M. So hat PHP genug Spielraum für die Verarbeitung der hochgeladenen Datei plus zusätzliche Operationen.
| Direktive | Bedeutung | Typischer Standard | Empfohlener Wert |
|---|---|---|---|
| upload_max_filesize | Maximale Größe einer einzelnen Datei | 2-8 MB | 50-100 MB |
| post_max_size | Maximale Größe aller POST-Daten | 8-16 MB | 60-120 MB |
| memory_limit | Maximaler PHP-Speicher pro Script | 128-256 MB | 256-512 MB |
php.ini bearbeiten
Die php.ini ist die zentrale Konfigurationsdatei für PHP. Bei Root-Zugriff findest du sie typischerweise unter /etc/php/8.2/apache2/php.ini oder /etc/php.ini, wobei die Versionsnummer variiert. Um den genauen Pfad herauszufinden, nutzt du die phpinfo()-Methode und suchst nach „Loaded Configuration File“.
Öffne die php.ini mit einem Texteditor und suche nach den drei relevanten Direktiven. Ändere die Werte entsprechend deiner Anforderungen. Achte darauf dass keine Semikolons am Zeilenanfang stehen, diese würden die Zeile auskommentieren. Nach dem Speichern musst du den Webserver oder PHP-FPM neu starten damit die Änderungen wirksam werden.
Alternative Methoden bei Shared-Hosting
Nutzer ohne direkten php.ini-Zugriff können auf alternative Methoden zurückgreifen. Die Datei .user.ini funktioniert ähnlich wie .htaccess für PHP-Einstellungen. Erstelle eine Datei namens .user.ini im Root-Verzeichnis deiner Website und füge die Direktiven hinzu: upload_max_filesize = 50M, post_max_size = 60M und memory_limit = 128M. Diese Methode funktioniert bei PHP-FPM und CGI.
Eine weitere Option ist die Anpassung über .htaccess mit php_value-Direktiven, wie bereits im Apache-Abschnitt beschrieben. Für WordPress-Nutzer bietet sich die wp-config.php an. Füge vor der Zeile „That’s all, stop editing!“ folgende Zeilen ein: @ini_set(‚upload_max_filesize‘, ’50M‘); @ini_set(‚post_max_size‘, ’60M‘); @ini_set(‚memory_limit‘, ‚128M‘);. Das @-Symbol unterdrückt Fehlermeldungen falls ini_set vom Hoster deaktiviert wurde.
Viele Hosting-Anbieter bieten mittlerweile benutzerfreundliche Tools im Hosting-Panel an. In cPanel findest du unter „Software“ den Punkt „Select PHP Version“ oder „MultiPHP INI Editor“. Plesk bietet unter „PHP-Einstellungen“ eine grafische Oberfläche zur Anpassung aller wichtigen Direktiven. Diese Methode ist besonders anfängerfreundlich da du keine Konfigurationsdateien manuell bearbeiten musst.
Windows IIS Konfiguration für größere Anfragen
Für Website-Betreiber auf Windows-Hosting oder eigenen Windows-Servern ist IIS die zentrale Komponente. Die Konfiguration unterscheidet sich grundlegend von Linux-basierten Systemen und nutzt eigene Direktiven und Einstellungsmöglichkeiten.
maxRequestEntityAllowed Einstellung
Die IIS-Einstellung maxRequestEntityAllowed in der requestFiltering-Sektion begrenzt die Größe der Anfrage in Bytes. Der Standard-Default liegt oft bei 30 MB, also 30000000 Bytes. Dieser Wert kann sowohl in der zentralen applicationHost.config als auch in der website-spezifischen web.config angepasst werden.
Für die Anpassung in der web.config fügst du folgenden XML-Code im system.webServer-Abschnitt ein: <security><requestFiltering><requestLimits maxAllowedContentLength=“52428800″ /></requestFiltering></security>. Der Wert 52428800 entspricht 50 MB. Beachte dass IIS zwischen maxRequestEntityAllowed (ältere Versionen) und maxAllowedContentLength (neuere Versionen) unterscheidet.
uploadReadAheadSize anpassen
Die Einstellung uploadReadAheadSize bestimmt wie viele Bytes IIS vorab liest bevor die Anfrage an die Anwendung weitergeleitet wird. Der Standard-Wert liegt bei 48 KB. Bei großen Uploads kann eine Erhöhung die Performance verbessern, da IIS mehr Daten zwischenspeichern kann bevor die Verarbeitung beginnt.
Du passt uploadReadAheadSize in der web.config im system.webServer-Abschnitt an: <serverRuntime uploadReadAheadSize=“524288″ />. Der Wert 524288 entspricht 512 KB. Zu hohe Werte können den Speicherverbrauch erhöhen, daher solltest du einen Wert wählen der zu deinen typischen Upload-Größen passt.
Konfiguration via IIS Manager
Für Administratoren ohne XML-Kenntnisse bietet der IIS Manager eine grafische Oberfläche. Öffne den IIS Manager und navigiere zu deiner Website. Doppelklicke auf „Request Filtering“ in der mittleren Ansicht. Klicke rechts auf „Edit Feature Settings“. Hier findest du das Feld „Maximum allowed content length (Bytes)“ das du entsprechend anpassen kannst.
Nach der Änderung musst du den Application Pool neu starten. Klicke dazu im IIS Manager auf „Application Pools“, wähle den relevanten Pool aus und klicke auf „Recycle“ oder „Restart“. Die Änderungen werden sofort wirksam. Der grafische Weg ist besonders praktisch wenn du mehrere Einstellungen gleichzeitig prüfen und anpassen möchtest.
WordPress spezifische Lösungen für 413 Fehler
WordPress ist das meistgenutzte CMS weltweit und viele Hosting-Kunden stoßen beim Upload von Themes, Plugins oder Medien auf 413-Fehler. WordPress bietet mehrere spezifische Anpassungsmöglichkeiten die über die allgemeinen Server-Einstellungen hinausgehen.
wp-config.php Anpassungen
Die wp-config.php ist die zentrale Konfigurationsdatei von WordPress. Du findest sie im Root-Verzeichnis deiner WordPress-Installation. Hier kannst du PHP-Limits direkt setzen ohne auf php.ini oder .htaccess angewiesen zu sein. Diese Methode funktioniert allerdings nur wenn dein Hoster die Funktion ini_set erlaubt.
Füge folgende Zeilen vor der Kommentarzeile „That’s all, stop editing!“ ein: @ini_set(‚upload_max_filesize‘, ’64M‘); @ini_set(‚post_max_size‘, ’64M‘); @ini_set(‚memory_limit‘, ‚256M‘);. Das @-Symbol verhindert dass WordPress Fehlermeldungen ausgibt falls ini_set deaktiviert ist. Die Werte kannst du an deine Bedürfnisse anpassen.
functions.php Methode
Eine alternative Methode nutzt die functions.php deines Child-Themes. Füge folgenden Code hinzu: @ini_set(‚upload_max_filesize‘, ’64M‘); @ini_set(‚post_max_size‘, ’64M‘); @ini_set(‚memory_limit‘, ‚256M‘);. Zusätzlich kannst du den WordPress-Filter wp_max_upload_size nutzen um das Upload-Limit innerhalb von WordPress zu erhöhen.
Der Nachteil dieser Methode ist die Theme-Abhängigkeit. Wechselst du das Theme, gehen die Einstellungen verloren. Nutze diese Methode nur wenn du sicher bist dass du das Theme langfristig verwendest oder dokumentiere die Änderung gut. Für dauerhafte Lösungen sind wp-config.php oder serverseitige Anpassungen besser geeignet.
Hosting-Panel Einstellungen nutzen
Viele WordPress-Hoster bieten im Hosting-Panel direkte Optionen zur Erhöhung der Upload-Limits. In cPanel findest du unter „Software“ den Punkt „Select PHP Version“ oder „MultiPHP INI Editor“. Hier kannst du upload_max_filesize, post_max_size und memory_limit über Schieberegler oder Eingabefelder anpassen.
Plesk bietet unter „PHP-Einstellungen“ eine ähnliche Oberfläche. Proprietäre Dashboards von Managed-WordPress-Hostern wie Kinsta oder SiteGround haben oft eigene Bereiche für PHP-Einstellungen. Diese grafischen Oberflächen sind besonders anfängerfreundlich und zeigen oft auch die aktuellen Werte und empfohlene Bereiche an. Nach der Änderung werden die neuen Werte meist sofort oder nach wenigen Minuten aktiv.
CDN und Reverse-Proxy Limits beachten
Viele moderne Websites nutzen CDNs oder Reverse-Proxies für Performance und Sicherheit. Diese Komponenten fügen eine zusätzliche Limit-Ebene hinzu die oft übersehen wird. Selbst wenn dein Webserver und PHP große Uploads erlauben, kann ein CDN die Anfrage vorher blockieren.
Cloudflare Upload-Limits
Cloudflare ist eines der verbreitetsten CDNs und setzt eigene Limits für Request-Größen. Im Free-Plan liegt das Maximum bei 100 MB für POST-Requests. Der Pro- und Business-Plan bieten dieselbe Grenze. Nur Enterprise-Kunden können höhere Limits vereinbaren und individuell konfigurieren.
| Cloudflare Plan | Max. Upload-Größe | Anpassbar |
|---|---|---|
| Free | 100 MB | Nein |
| Pro | 100 MB | Nein |
| Business | 100 MB | Nein |
| Enterprise | Individuell | Ja |
Wenn du regelmäßig größere Dateien hochlädst, kannst du für diese Endpunkte Cloudflare umgehen. Erstelle eine separate Subdomain für Uploads (z.B. upload.deinedomain.de) und schließe diese von Cloudflare aus. In den DNS-Einstellungen deaktivierst du dazu die orangefarbene Wolke für diesen Eintrag. So läuft der Upload-Traffic direkt zu deinem Server ohne CDN-Limits.
AWS CloudFront und API Gateway
AWS CloudFront als CDN-Lösung hat ein Standard-Limit von 20 MB für Request-Bodies. Für größere Uploads empfiehlt AWS die Nutzung von S3 Direct Upload oder Multipart-Uploads. Das API Gateway von AWS begrenzt Payloads auf 10 MB bei REST-APIs und 6 MB bei WebSocket-APIs. Diese Limits sind fest und können nicht erhöht werden.
Für größere Datenübertragungen in AWS-Umgebungen nutzt du Lambda-Funktionen mit S3-Integration. Der Client erhält eine signierte URL für direkten S3-Upload und umgeht damit die API-Gateway-Limits. Diese Architektur ist komplexer, skaliert jedoch besser und verursacht weniger Kosten als das Routing großer Dateien durch API Gateway und Lambda.
Andere CDN-Anbieter
Azure Front Door begrenzt Request-Bodies auf 128 KB im Standard-Tier, was für die meisten Upload-Szenarien zu niedrig ist. Im Premium-Tier kannst du die Limits erhöhen. Google Cloud CDN hat kein festes Limit für Request-Größen, leitet jedoch alle POST-Requests direkt an den Origin-Server weiter ohne Caching. Fastly erlaubt bis zu 1 GB Request-Body-Größe, verlangt jedoch eine spezielle Konfiguration für Uploads über 100 MB.
Sicherheitsrisiken bei zu hohen Upload-Limits
Höhere Upload-Limits haben nicht nur technische sondern auch Sicherheits- und Kostenimplikationen. Falsch konfigurierte Limits können zu Serverüberlastung und Angriffen führen. Du musst die richtige Balance zwischen Funktionalität und Sicherheit finden.
DoS und DDoS Angriffsvektoren
Angreifer können große Upload-Limits ausnutzen um deinen Server zu überlasten. Stell dir vor dein Limit liegt bei 500 MB und ein Angreifer startet 100 gleichzeitige Uploads. Das bedeutet potenziell 50 GB Daten die gleichzeitig verarbeitet werden müssen. Dein Server muss diese Daten empfangen, im Arbeitsspeicher oder temporären Dateien zwischenspeichern und verarbeiten.
Die Folge: CPU-Last steigt, Arbeitsspeicher wird knapp, Festplatten-I/O erreicht Limits und legitime Anfragen werden langsam oder schlagen fehl. Bei Shared-Hosting kann das zur Account-Suspendierung führen. Schütze dich durch Rate-Limiting auf Webserver-Ebene, Firewall-Regeln und Monitoring. Tools wie fail2ban können automatisch IPs blockieren die verdächtige Upload-Muster zeigen.
Nginx bietet die Direktive limit_req_zone für Rate-Limiting. Du kannst festlegen dass eine IP maximal 10 Requests pro Minute zu einem Upload-Endpunkt senden darf. Kombiniert mit sinnvollen Upload-Limits reduzierst du das Risiko von DDoS-Angriffen erheblich.
Ressourcenverbrauch und Hosting-Kosten
Große Uploads verbrauchen Speicherplatz, Bandbreite und CPU-Zeit. Bei Shared-Hosting-Tarifen mit begrenzten Ressourcen kann das schnell zum Problem werden. Viele Hoster setzen monatliche Traffic-Limits. 1000 Uploads à 100 MB bedeuten 100 GB Traffic. Bei einem Tarif mit 500 GB monatlichem Inklusiv-Traffic ist das bereits ein Fünftel deines Kontingents.
Bei Cloud-Hosting zahlst du oft nach tatsächlichem Verbrauch. AWS berechnet ausgehenden Traffic, Speicheroperationen und Rechenzeit. Ein unkontrollierter Upload-Bereich kann zu unerwarteten Kosten führen. Monitore deinen Ressourcenverbrauch regelmäßig und setze Alerts für ungewöhnliche Aktivitäten. Viele Cloud-Anbieter bieten Budget-Alerts die dich warnen wenn bestimmte Kostenschwellen erreicht werden.
Malware-Upload-Risiken
Größere Upload-Limits erhöhen das Risiko dass schädliche Dateien hochgeladen werden. Ein Angreifer könnte versuchen Malware, Backdoors oder Phishing-Seiten auf deinen Server zu laden. Implementiere deshalb mehrschichtige Sicherheitsmaßnahmen: Datei-Typ-Validierung, Virenscanner, Content-Type-Prüfung und Ausführungsrechte-Beschränkungen.
Validiere hochgeladene Dateien nicht nur anhand der Dateiendung. Diese lässt sich leicht fälschen. Prüfe den tatsächlichen MIME-Type und die Dateistruktur. Für Bilder kannst du Libraries nutzen die versuchen das Bild zu laden. Schlägt das fehl, ist es wahrscheinlich keine echte Bilddatei. Speichere Uploads außerhalb des Web-Root oder in Verzeichnissen ohne Ausführungsrechte. So können hochgeladene PHP- oder Script-Dateien nicht direkt über den Browser aufgerufen und ausgeführt werden.
Best Practices für Upload-Limits je nach Website-Typ
Nicht jede Website braucht dieselben Limits. Die optimalen Werte hängen von deinem Use-Case ab. Zu niedrige Limits frustrieren Nutzer, zu hohe verschwenden Ressourcen und erhöhen Sicherheitsrisiken.
Blogs und Content-Websites
Für typische Blogs mit Textinhalten, Bildern und gelegentlichen PDF-Downloads reichen moderate Limits völlig aus. Die meisten Bilder sollten für Web optimiert sein und liegen dann zwischen 100 KB und 2 MB. Auch hochauflösende Fotos überschreiten nach Kompression selten 5 MB.
Empfohlene Werte: upload_max_filesize = 10 MB, post_max_size = 25 MB, memory_limit = 128 MB. Diese Konfiguration erlaubt problemlos mehrere Bilder gleichzeitig hochzuladen und bietet Puffer für größere Dokumente. Für Nginx oder Apache setzt du das Limit auf 25 bis 50 MB.
E-Commerce und Webshops
Online-Shops haben höhere Anforderungen. Produktbilder sollten hochauflösend sein für Zoom-Funktionen, Katalog-Uploads enthalten oft hunderte Produkte und B2B-Shops erlauben Kunden das Hochladen von Angebots-Anfragen oder technischen Zeichnungen.
Empfohlene Werte für B2C-Shops: upload_max_filesize = 50 MB, post_max_size = 75 MB. Für B2B-Shops mit technischen Dokumenten: upload_max_filesize = 100 MB, post_max_size = 150 MB. Webserver-Limits sollten entsprechend bei 100 bis 200 MB liegen.
Medien-Plattformen und Portfolios
Fotografen, Videografen und Designer benötigen deutlich höhere Limits. RAW-Fotos von professionellen Kameras liegen zwischen 25 und 100 MB. Hochauflösende Videos erreichen schnell mehrere Hundert Megabyte oder Gigabyte.
Für Foto-Plattformen: upload_max_filesize = 100 MB, post_max_size = 150 MB, Webserver-Limit 200 bis 500 MB. Für Video-Plattformen sind die Anforderungen höher, hier solltest du jedoch über Chunk-Upload-Mechanismen nachdenken statt einfach die Limits auf 2 GB zu setzen. Chunked Uploads teilen große Dateien in kleine Stücke auf und laden diese nacheinander hoch.
SaaS und Web-Anwendungen
API-basierte Anwendungen haben spezifische Anforderungen für JSON- oder XML-Payloads. REST-APIs sollten generell mit kleinen Payloads arbeiten. Typische Limits liegen zwischen 1 und 10 MB für Standard-Requests. Batch-Operationen die viele Datensätze auf einmal verarbeiten können größere Payloads benötigen, sollten jedoch idealerweise durch Pagination oder Streaming ersetzt werden.
Alternative Lösungen bei dauerhaften Upload-Problemen
Manchmal ist die Erhöhung von Server-Limits nicht die beste Lösung. Alternative Ansätze können technisch eleganter und wirtschaftlich sinnvoller sein.
Chunk-Upload und Resumable Uploads
Moderne Upload-Techniken teilen große Dateien in kleine Stücke auf. Ein 500 MB Video wird beispielsweise in 50 Chunks à 10 MB aufgeteilt. Jeder Chunk wird einzeln hochgeladen und der Server setzt die Datei am Ende zusammen. Der große Vorteil: Bricht die Verbindung ab, muss nur der aktuelle Chunk wiederholt werden, nicht die gesamte Datei.
JavaScript-Bibliotheken wie Resumable.js, Uppy oder Dropzone.js bieten diese Funktionalität direkt einsatzbereit. Auf Server-Seite benötigst du Logik zum Empfangen der Chunks, zur Validierung der Reihenfolge und zum finalen Zusammensetzen.
Externe Upload-Services nutzen
Spezialisierte Upload-Services nehmen dir die Last ab. AWS S3 Direct Upload erlaubt Clients, Dateien direkt zu S3 hochzuladen ohne dass die Daten durch deinen Server laufen. Du generierst eine signierte URL, der Client lädt direkt zu S3 hoch und benachrichtigt dann deinen Server über die erfolgreiche Übertragung.
Cloudinary bietet ähnliche Funktionen speziell für Bilder und Videos mit automatischer Optimierung und Transformation. Uploadcare ist ein dedizierter Upload-Service mit Features wie Bildbearbeitung, Virenscanning und CDN-Auslieferung. Die Kosten für diese Services beginnen oft bei wenigen Euro pro Monat und skalieren mit dem Volumen.
Client-seitige Kompression
Moderne Browser können Bilder und Videos bereits vor dem Upload komprimieren. JavaScript-Bibliotheken wie Browser-Image-Compression oder Compressor.js reduzieren die Dateigröße im Browser bevor die Übertragung startet. Ein 50 MB Foto kann so auf 5 MB schrumpfen ohne dass der Nutzer manuell eingreifen muss.
Der Nachteil ist ein gewisser Qualitätsverlust. Für professionelle Fotografie ist das oft inakzeptabel. Für Social-Media-Plattformen, Foren oder Standard-Websites ist die Qualität jedoch meist ausreichend.
Hosting-Upgrade erwägen
Manchmal ist ein Wechsel von Shared-Hosting zu VPS oder Cloud-Hosting die beste Lösung. Shared-Hosting-Tarife haben oft strikte Limits die sich nicht oder nur begrenzt anpassen lassen. Ein VPS gibt dir volle Kontrolle über alle Konfigurationen. Du kannst Limits nach Bedarf setzen und hast garantierte Ressourcen.
Die Kosten für einen Einsteiger-VPS beginnen bei etwa 5 bis 10 Euro monatlich. Managed-VPS-Angebote mit Support kosten 20 bis 50 Euro. Cloud-Hosting bei AWS, Google Cloud oder Azure ist flexibler jedoch komplexer. Für die meisten kleinen bis mittleren Websites ist ein VPS der beste Kompromiss zwischen Kontrolle, Performance und Kosten.
Häufige Fehler bei der Behebung von 413 Problemen
Viele Website-Betreiber machen bei der Fehlersuche typische Fehler die Zeit kosten und manchmal neue Probleme verursachen.
Der häufigste Fehler ist die Anpassung nur einer Ebene. Du erhöhst beispielsweise das PHP-Limit auf 100 MB, Nginx blockiert jedoch bereits bei 10 MB. Oder du passt Nginx an, vergisst jedoch PHP. Das Ergebnis: Der Fehler bleibt bestehen und du weißt nicht warum. Prüfe systematisch alle Ebenen deiner Hosting-Architektur: Webserver, PHP, Proxy, CDN und API-Gateway.
Ein weiterer Fehler sind Werte in falscher Hierarchie. Wenn upload_max_filesize größer ist als post_max_size, funktioniert der Upload trotzdem nicht. Die Regel ist: memory_limit > post_max_size > upload_max_filesize. Achte darauf dass jede Ebene genug Spielraum für die darunterliegende bietet.
Viele vergessen den Server-Reload nach Konfigurationsänderungen. PHP liest die php.ini nur beim Start, Apache und Nginx laden ihre Konfiguration ebenfalls nur beim Start oder Reload. Änderungen in Konfigurationsdateien werden erst nach einem Neustart wirksam. Nutze die entsprechenden Befehle: sudo systemctl reload nginx, sudo systemctl reload apache2 oder sudo systemctl restart php-fpm.
Ein klassischer Fehler bei Apache-Nutzern: .htaccess-Änderungen auf Nginx-Servern. Nginx ignoriert .htaccess-Dateien komplett. Wenn du auf einem Nginx-Server arbeitest, musst du die nginx.conf oder site-spezifische Konfigurationsdateien bearbeiten. Umgekehrt funktionieren Nginx-Direktiven nicht in Apache-Umgebungen.
Zu hohe Werte ohne Sicherheitsbedenken sind ebenfalls problematisch. Ein Limit von 2 GB mag verlockend klingen, öffnet jedoch Tür und Tor für Angriffe und Ressourcenprobleme. Setze Werte so hoch wie nötig jedoch so niedrig wie möglich. Kombiniere höhere Limits immer mit Rate-Limiting, Monitoring und Sicherheitsmaßnahmen.
Manche bearbeiten die falsche Konfigurationsdatei. Bei PHP existieren oft mehrere php.ini-Dateien für CLI, Apache und FPM. Prüfe mit phpinfo() welche Datei aktiv geladen ist. Bei Apache kann es mehrere VirtualHost-Konfigurationen geben. Stelle sicher dass du die richtige Datei für deine Domain bearbeitest.
Cache-Probleme führen manchmal dazu dass alte Konfigurationen noch verwendet werden. Cloudflare und andere CDNs cachen auch Fehlerseiten. Nach einer Konfigurationsänderung solltest du den CDN-Cache leeren. Browser cachen ebenfalls Fehlerseiten. Teste nach Änderungen im Inkognito-Modus oder lösche den Browser-Cache.
Fazit: 413-Fehler systematisch lösen und vorbeugen
Der HTTP-Statuscode 413 ist ein häufiges jedoch lösbares Problem das durch zu restriktive Server-Limits verursacht wird. Als Website-Betreiber musst du verstehen dass moderne Hosting-Architekturen aus mehreren Schichten bestehen und jede Ebene eigene Größenlimits setzen kann. Ein systematisches Vorgehen ist entscheidend: Prüfe zuerst die Logs um herauszufinden welche Komponente die Anfrage blockiert, ermittle dann die aktuellen Limits auf allen Ebenen und passe diese koordiniert an.
Wähle sinnvolle Werte je nach Website-Typ statt einfach maximale Limits zu setzen. Ein Blog braucht andere Konfigurationen als eine Video-Plattform. Beachte dabei immer die Sicherheitsaspekte. Höhere Limits bedeuten mehr Ressourcenverbrauch und größere Angriffsfläche. Kombiniere Upload-Limits deshalb mit Rate-Limiting, Monitoring und Validierung. Ziehe alternative Lösungen wie Chunk-Uploads oder externe Services in Betracht wenn du regelmäßig sehr große Dateien verarbeiten musst.
Überprüfe deine aktuellen Hosting-Limits regelmäßig besonders wenn sich die Anforderungen deiner Website ändern. Wenn du feststellst dass die Limits deines aktuellen Tarifs dauerhaft zu niedrig sind, sprich mit deinem Hosting-Anbieter oder erwäge ein Upgrade. Bei der Wahl eines neuen Hosters achte auf flexible Konfigurationsmöglichkeiten und großzügige Standard-Limits.
Brauchst du Hilfe bei der Wahl des richtigen Hostinganbieters?
- 100 % kostenlos und unverbindlich
- Persönliche Empfehlung
- Antwort innerhalb von 24 Stunden
Häufig gestellte Fragen
Was ist der Unterschied zwischen 413 Payload Too Large und 414 URI Too Long?
Der Statuscode 413 bezieht sich auf die Größe des Request-Body, also die Daten die im Body der HTTP-Anfrage übertragen werden. Das sind typischerweise hochgeladene Dateien, Formulardaten oder API-Payloads. Der Code 414 hingegen tritt auf wenn die URL selbst zu lang ist. URLs haben eine maximale Länge die je nach Server und Browser variiert, meist zwischen 2000 und 8000 Zeichen. Wenn du beispielsweise sehr viele Parameter in der URL übergibst oder sehr lange Werte verwendest, kann ein 414-Fehler auftreten. Die Lösungen sind unterschiedlich: Bei 413 erhöhst du Body-Limits, bei 414 musst du die URL kürzen oder Daten per POST statt GET übertragen.
Kann ich 413 Fehler beheben ohne Zugriff auf die Server-Konfiguration?
Ja, in vielen Fällen gibt es Workarounds auch ohne Root-Zugriff. Bei Shared-Hosting kannst du .htaccess-Dateien nutzen um PHP-Limits anzupassen, sofern dein Hoster das erlaubt. Für WordPress bieten sich Anpassungen in wp-config.php oder functions.php an. Viele Hosting-Provider stellen außerdem grafische Tools in ihrem Control Panel bereit mit denen du Upload-Limits erhöhen kannst. Alternativ kannst du die Dateigröße reduzieren durch Kompression oder die Datei in kleinere Teile aufteilen. Wenn keine dieser Methoden funktioniert, kontaktiere deinen Hoster und frage nach einer Erhöhung der Limits. Viele Hoster passen die Werte auf Anfrage an, besonders wenn du einen plausiblen Grund nennst.
Welche Upload-Limits sind für eine WordPress-Website sinnvoll?
Für eine Standard-WordPress-Website mit Blog-Inhalten und optimierten Bildern reichen upload_max_filesize = 10 MB und post_max_size = 25 MB völlig aus. Betreibst du eine Medien-intensive Website mit hochauflösenden Fotos oder Videos, solltest du auf 50 bis 100 MB erhöhen. Für E-Commerce-Websites mit Produktbildern und Katalog-Uploads sind 50 MB ein guter Mittelwert. Wichtig ist dass post_max_size immer größer ist als upload_max_filesize und memory_limit größer als post_max_size. Eine typische Konfiguration wäre: upload_max_filesize = 50M, post_max_size = 64M, memory_limit = 256M. Passe die Werte an deine tatsächlichen Bedürfnisse an und übertreibe nicht, um Ressourcen zu schonen und Sicherheitsrisiken zu minimieren.
Warum tritt der 413 Fehler nur bei bestimmten Dateien auf?
Wenn der Fehler nur bei bestimmten Dateien auftritt, liegt das meist an der unterschiedlichen Größe der Dateien. Eine 5 MB Datei lädt problemlos hoch, eine 15 MB Datei wird blockiert weil sie das Limit von 10 MB überschreitet. Manchmal spielen auch Datei-Typen eine Rolle. Manche Server oder Anwendungen haben unterschiedliche Limits für verschiedene MIME-Types. Videos könnten ein höheres Limit haben als Bilder oder Dokumente. Ein weiterer Grund können Metadaten oder eingebettete Vorschaubilder sein die die tatsächliche Dateigröße erhöhen. Eine scheinbar kleine Bilddatei kann durch eingebettete RAW-Vorschauen oder umfangreiche EXIF-Daten deutlich größer sein als erwartet. Prüfe die tatsächliche Dateigröße und vergleiche sie mit deinen konfigurierten Limits.
Ist es gefährlich die Upload-Limits sehr hoch zu setzen?
Ja, zu hohe Upload-Limits bergen mehrere Risiken. Erstens erhöhen sie die Angriffsfläche für DoS-Angriffe. Ein Angreifer könnte viele große Uploads gleichzeitig starten und deinen Server überlasten. Zweitens verbrauchen große Uploads erhebliche Ressourcen: Bandbreite, Speicherplatz, Arbeitsspeicher und CPU-Zeit. Bei Shared-Hosting kann das zur Account-Suspendierung führen, bei Cloud-Hosting zu unerwarteten Kosten. Drittens steigt das Risiko dass schädliche Dateien hochgeladen werden. Größere Dateien bieten mehr Möglichkeiten Malware zu verstecken. Setze Limits daher so hoch wie nötig jedoch so niedrig wie möglich. Kombiniere höhere Limits mit Sicherheitsmaßnahmen wie Rate-Limiting, Datei-Validierung, Virenscannern und Monitoring. Für die meisten Websites sind Limits zwischen 10 und 100 MB völlig ausreichend.
Welche deutschen Hosting-Anbieter bieten flexible Upload-Limits?
Viele deutsche Hosting-Anbieter bieten flexible Konfigurationsmöglichkeiten für Upload-Limits. ALL-INKL bietet bei ihren Tarifen ab PrivatPlus Zugriff auf PHP-Einstellungen über das KAS-Panel, wo du upload_max_filesize und post_max_size anpassen kannst. Hetzner bietet bei ihren Webhosting-Paketen ebenfalls Zugriff auf PHP-Konfigurationen und bei VPS-Tarifen hast du volle Root-Rechte. IONOS ermöglicht bei Managed-Hosting-Tarifen die Anpassung über das Control Panel. Strato bietet bei höherwertigen Tarifen ebenfalls Zugriffsmöglichkeiten. Generell gilt: Bei Shared-Hosting sind die Möglichkeiten begrenzt, bei VPS oder Cloud-Hosting hast du volle Kontrolle. Managed-WordPress-Hoster wie Raidboxes oder WP-Projects setzen oft großzügige Standard-Limits von 128 MB oder mehr. Prüfe vor der Buchung die technischen Details des Tarifs oder frage beim Support nach den Möglichkeiten zur Anpassung von Upload-Limits.
geschrieben von:
Jason Carter
Mein Name ist Jason Carter und ich konzentriere mich auf den technischen Bereich von Webhosting Vorteil. Mit über 10 Jahren Erfahrung in der IT-Branche bringe ich umfangreiche Kenntnisse und Expertise im Bereich Webhosting mit. Ich teste verschiedene Hosting-Anbieter, schreibe detaillierte Bewertungen und Vergleiche und arbeite kontinuierlich daran, die Website zu verbessern, damit Besucher die bestmögliche Erfahrung erhalten.
Auch interessant
Wir helfen dir, den besten Webhoster zu finden
Kostenlose beratung






