Když Nginx se používá jako back-end server pro webové aplikace, jako je WordPress , Drupal , atd . (které jsou obvykle založeny na PHP a MySQL Database), mnoho uživatelů narazí na chybu:„413 – Požadavek je příliš velký '.
K této chybě dochází, kdykoli se uživatel pokusí nahrát soubor, který je větší než nakonfigurovaná maximální velikost souboru pro nahrávání. Výchozí limit pro velikost nahrávaného souboru je 1 MB jak je definováno v Nginx konfigurace.
[ Také by se vám mohlo líbit:Jak opravit časový limit brány 504 na serveru Nginx ]
Na tuto chybu obvykle narazí WordPress admin se poprvé pokouší nainstalovat plugin. Pokusil jsem se například nainstalovat ‘Správce stahování Plugin WordPress v mém místním nastavení WP mi dává stejnou chybu:
Změna limitu velikosti nahrávaného souboru v Nginx
Otevřete Nginx konfigurační soubor buď v Vimu nebo libovolný textový editor dle vašeho výběru.
$ sudo vim /etc/nginx/nginx.conf
Přidejte direktivu „client_max_body_size ‘. Tato směrnice definuje maximální velikost těla požadavku klienta. Ve výchozím nastavení je hodnota této direktivy 1 MB . Zvýšení této hodnoty vám umožní nahrát soubor větší velikosti, který je odeslán s požadavkem.
Přidejte následující řádek pod ‚http‘ blokovat:
client_max_body_size 16M;
Můžete dokonce zadat vyšší číslo místo 16 MB je-li potřeba. Nyní uložte a zavřete soubor.
Restartujte Nginx pomocí následujícího příkazu.
$ sudo systemctl restart nginx
Nyní váš Nginx nastavení vám umožní nahrát soubor až 16 MB ve velikosti. Zkusme nainstalovat plugin znovu.
I po konfiguraci velikosti souboru Nginx limit nahrávání souborů PHP stále blokuje nahrávání. Podívejme se, jak to změnit.
Změnit limit velikosti nahrávání PHP
Nginx se používá ve spojení s webovými aplikacemi založenými na PHP a výše uvedený problém může nastat kvůli omezení velikosti nahrávaných souborů PHP.
Otevřete soubor ‘php.ini ‘, který se nachází v konfiguračním adresáři PHP.
$ sudo vim /etc/php/7.4/fpm/php.ini OR $ sudo vim /etc/php.ini
Přejděte na proměnné upload_file_maxsize , tj. maximální velikost souboru, který je povoleno nahrát, a post_maxsize , tj. maximální velikost požadavku na příspěvek.
Protože je soubor nahrán jako součást požadavku na odeslání, post_maxsize by měla být vždy větší než maximální velikost_souboru pro nahrání .
Změňte hodnoty podle potřeby.
upload_max_filesize = 16M post_max_size = 20M
Uložte a ukončete soubor.
Restartujte PHP a také Nginx , aby se nová konfigurace provedla:
$ sudo systemctl restart php7.4-fpm $ sudo systemctl restart nginx
Měli byste nahradit php7.4 ve výše uvedeném příkazu s jakoukoli verzí PHP, nebo dokonce jen „php “ pokud je to název služby PHP ve vašem počítači.
Nově zadaná velikost souboru je nyní povolena pro nahrávání souborů ve webové aplikaci a plugin úspěšně pokračuje v instalaci.
Závěr
Viděli jsme, jak se vypořádat s problémem, že entita požadavku je příliš velká ve webové aplikaci založené na Nginx. Všimněte si, že nejen PHP, ale pokud se s Nginx používají jiné CGI, problém může nastat; v takovém případě mohou uživatelé zvýšit limit v konfiguračním souboru pro konkrétní CGI.
Děkujeme za přečtení a dejte nám vědět své myšlenky v komentářích níže!