PvP Server Kiralama & Oyun Sunucuları
0 Giriş Yap Kayıt Ol

Řešení chyby 502 Bad Gateway a 504 Gateway Timeout Error na serveru Linux

Yazdır

Řešení chyby 502 Bad Gateway a 504 Gateway Timeout Error na serveru Linux

Podrobný průvodce řešením problémů s Nginx, Apache, PHP-FPM a časovým limitem služby.

vidět na webových stránkách 502 Špatná brána a 504 Časový limit brány k chybám obvykle dochází, protože webový server nedostává správnou odpověď od back-endové služby. Touto službou může být PHP-FPM, backend Apache, aplikace Node.js, služba API herního panelu nebo jiná aplikace za proxy.

Tyto chyby jsou zvláště běžné v hostingu, herním panelu, WHMCS, Pterodactyl, vlastním administračním panelu a webových spouštěcích systémech.

Jednoduché vysvětlení: Nginx je jako obsluha u dveří. Pokud PHP nebo aplikace uvnitř neodpovídá, zobrazí uživateli chybu 502 nebo 504.

1. Rozdíl mezi 502 a 504 Chyba

  • 502 Špatná brána: Webový server se nemůže připojit k backendové službě nebo obdrží zkomolenou odpověď.
  • Časový limit brány 504: Zdá se, že backendová služba odpovídá, ale odpověď není vrácena včas.

Takže 502 je spíše pád připojení/služby a 504 je problém s pomalostí nebo časovým limitem.

2. Kontrola stavů služeb

Nejprve zkontrolujte, zda běží webový server a služby PHP.

systemctl status nginx
systemctl status apache2
systemctl status php-fpm

Na systémech CentOS, AlmaLinux nebo Rocky Linux může být služba PHP-FPM pojmenována:

systemctl status php-fpm
systemctl status httpd

Pokud se služba zastavila, restartujte ji:

systemctl restart nginx
systemctl restart php-fpm

3. Kontrola souborů protokolu

Není správné pokračovat v odhadování chyb 502 a 504. Soubor protokolu zobrazuje skutečnou příčinu chyby.

tail -n 100 /var/log/nginx/error.log
tail -n 100 /var/log/apache2/error.log

Na systémech založených na CentOS:

tail -n 100 /var/log/httpd/error_log

V protokolech lze vidět následující prohlášení:

  • connect() se nezdařilo: Nelze se připojit k backendové službě.
  • upstream vypršel: Backendová služba reaguje pozdě.
  • připojení odmítnuto: Služba nefunguje nebo dochází k přesměrování na nesprávný port.
  • povolení odepřeno: Došlo k problému s oprávněním soketu nebo souboru.

4. PHP-FPM Socket nebo Port Control

Nginx se připojuje k PHP-FPM přes socket nebo port. Cesta PHP-FPM v konfiguračním souboru Nginx a skutečná hodnota naslouchání PHP-FPM musí být stejné.

grep -R "fastcgi_pass" /etc/nginx/sites-enabled/
grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf

Například pokud Nginx používá:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

Stejný soket by měl být naslouchán na straně PHP-FPM:

listen = /run/php/php8.2-fpm.sock
Důležité: Pokud se verze PHP změnila, Nginx se může stále dívat na starou cestu soketu PHP-FPM. Toto je jedna z nejčastějších příčin chyb 502.

5. Zvýšení nastavení časového limitu

Chyby 504 se mohou vyskytovat ve velkých panelech pro zpracování, na herních trzích, v rozhraních API nebo v pomalu běžících skriptech PHP. Hodnoty časového limitu Nginx lze zvýšit.

nano /etc/nginx/nginx.conf

Do bloku http nebo příslušného bloku serveru lze přidat následující hodnoty:

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
fastcgi_read_timeout 300;

Otestujte nastavení a restartujte Nginx:

nginx -t
systemctl restart nginx

6. Kontrola limitů procesu PHP-FPM

Když se provoz zvýší, limity transakcí PHP-FPM mohou být nedostatečné. V tomto případě jsou požadavky zařazeny do fronty a dojde k vypršení časového limitu.

nano /etc/php/8.2/fpm/pool.d/www.conf

Příklad nastavení:

pm = dynamic
pm.max_children = 30
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10

Tyto hodnoty by měly být upraveny podle velikosti paměti RAM serveru. Nastavení příliš vysoké hodnoty zvyšuje spotřebu paměti RAM.

Časté chyby

  • Změna nastavení bez prohlížení souboru protokolu
  • Neaktualizuje se cesta soketu Nginx, i když se verze PHP změnila
  • Skutečný pomalý dotaz se neopravuje zvýšením časového limitu
  • Zvýšení limitů PHP-FPM bez výpočtu RAM
  • Restartování služby bez testování konfigurace Nginx

FAQ

Je chyba 502 vždy způsobena Nginx?
Ne. Nginx je jen ten, který ukazuje chybu. Skutečný problém může být v PHP-FPM, backendu Apache, aplikaci Node.js nebo jiné službě.

Je zvýšení časového limitu definitivním řešením pro chyby 504?
Ne vždy. Zvýšení časového limitu poskytuje dočasnou úlevu. Skutečným řešením je najít problém s pomalým dotazem, náročným zpracováním nebo výkonem.

Je bezpečné restartovat PHP-FPM?
Je to obecně bezpečné, ale aktivní požadavky mohou být na krátkou dobu ovlivněny. V rušných systémech by měly být preferovány hodiny s nízkým provozem.

Doporučení ohledně výkonu

  • Pravidelně kontrolujte verzi PHP-FPM a cestu soketu.
  • Prozkoumejte pomalé protokoly dotazů ve webovém panelu a ve službách API.
  • Pokud je RAM nedostatečná, nezvyšujte nevědomky hodnotu PHP-FPM max_children.
  • Snižte zátěž backendu pomocí systému mezipaměti.
  • Spravujte protokoly chyb dříve, než se rozrostou, pomocí logrotate.

Tento článek je speciálně připraven pro PvPServer.

Bu cevap yeterince yardımcı oldu mu?

Oyla

overlay spinner