Megoldás az 502-es rossz átjáró és az 504-es átjáró időtúllépési hibájára a Linux-kiszolgálón
Lépésről lépésre szóló útmutató az Nginx, Apache, PHP-FPM és a szolgáltatás időtúllépési problémáinak megoldásához.
weboldalakon látható 502 Rossz átjáró és 504 Gateway Timeout A hibák általában azért fordulnak elő, mert a webszerver nem kapja meg a megfelelő választ a háttérszolgáltatástól. Ez a szolgáltatás lehet PHP-FPM, Apache háttérrendszer, Node.js alkalmazás, játékpanel API szolgáltatás vagy más, a proxy mögötti alkalmazás.
Ezek a hibák különösen gyakoriak a hosting, a játékpanel, a WHMCS, a Pterodactyl, az egyéni adminisztrációs panel és a webalapú indítórendszereknél.
1. Különbség 502 és 504 hiba között
- 502 Bad Gateway: A webszerver nem tud csatlakozni a háttérszolgáltatáshoz, vagy hibás választ kap.
- 504-es átjáró időtúllépése: Úgy tűnik, hogy a háttérszolgáltatás válaszol, de a választ nem küldi vissza időben.
Tehát az 502 inkább kapcsolat/szolgáltatás összeomlás, az 504 pedig lassúság vagy időtúllépési probléma.
2. Szolgáltatási állapotok ellenőrzése
Először ellenőrizze, hogy a webszerver és a PHP-szolgáltatások futnak-e.
systemctl status nginx systemctl status apache2 systemctl status php-fpm
CentOS, AlmaLinux vagy Rocky Linux rendszereken a PHP-FPM szolgáltatás neve lehet:
systemctl status php-fpm systemctl status httpd
Ha a szolgáltatás leállt, indítsa újra:
systemctl restart nginx systemctl restart php-fpm
3. Naplófájlok áttekintése
Nem helyes az 502-es és 504-es hibák találgatása. A naplófájl megmutatja a hiba valódi okát.
tail -n 100 /var/log/nginx/error.log tail -n 100 /var/log/apache2/error.log
CentOS-alapú rendszereken:
tail -n 100 /var/log/httpd/error_log
A naplókban a következő állítások láthatók:
- connect() sikertelen: Nem lehet csatlakozni a háttérszolgáltatáshoz.
- upstream időtúllépés: A háttérszolgáltatás későn válaszol.
- kapcsolat elutasítva: A szolgáltatás nem működik, vagy rossz portra van továbbítás.
- engedély megtagadva: Socket- vagy fájlengedély-probléma van.
4. PHP-FPM Socket vagy Port Control
Az Nginx aljzaton vagy porton keresztül csatlakozik a PHP-FPM-hez. Az Nginx konfigurációs fájlban lévő PHP-FPM elérési útnak és a tényleges PHP-FPM figyelési értéknek meg kell egyeznie.
grep -R "fastcgi_pass" /etc/nginx/sites-enabled/ grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf
Például, ha az Nginx a következőket használja:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
Ugyanezt a socketet kell hallgatni a PHP-FPM oldalon:
listen = /run/php/php8.2-fpm.sock
5. Az időtúllépési beállítások növelése
504-es hibákat kaphatnak nagy feldolgozó panelek, játékpiacok, API-k vagy lassan futó PHP szkriptek. Az Nginx időtúllépési értékei növelhetők.
nano /etc/nginx/nginx.conf
A következő értékeket lehet hozzáadni a http blokkhoz vagy a megfelelő szerver blokkhoz:
proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; fastcgi_read_timeout 300;
Tesztelje a beállításokat, és indítsa újra az Nginx-et:
nginx -t systemctl restart nginx
6. PHP-FPM folyamatkorlátok ellenőrzése
A forgalom növekedése esetén előfordulhat, hogy a PHP-FPM tranzakciós korlátok nem elegendőek. Ebben az esetben a kérések sorba kerülnek, és időtúllépés lép fel.
nano /etc/php/8.2/fpm/pool.d/www.conf
Példa beállítások:
pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10
Ezeket az értékeket a szerver RAM mennyiségének megfelelően kell beállítani. A túl magas érték beállítása növeli a RAM-fogyasztást.
Gyakori hibák
- Beállítások módosítása a naplófájl megtekintése nélkül
- Nem frissíti az Nginx socket elérési útját, bár a PHP verzió megváltozott
- Nem javítja ki a tényleges lassú lekérdezést az időtúllépés növelésével
- PHP-FPM korlátok növelése RAM számítása nélkül
- A szolgáltatás újraindítása az Nginx konfiguráció tesztelése nélkül
GYIK
Az 502-es hibát mindig az Nginx okozza?
Nem. Az Nginx csak a hibát mutatja. Az igazi probléma a PHP-FPM-ben, az Apache háttérrendszerben, a Node.js alkalmazásban vagy más szolgáltatásban lehet.
Az időtúllépés növelése a végleges megoldás az 504-es hibákra?
Nem mindig. Az időkorlát növelése átmeneti enyhülést jelent. Az igazi megoldás a lassú lekérdezés, a nehéz feldolgozás vagy a teljesítményprobléma megtalálása.
Biztonságos a PHP-FPM újraindítása?
Általában biztonságos, de az aktív kéréseket rövid ideig érintheti. A forgalmas rendszerekben az alacsony forgalmú órákat kell előnyben részesíteni.
Teljesítményre vonatkozó ajánlások
- Rendszeresen ellenőrizze a PHP-FPM verzióját és a socket elérési útját.
- Vizsgálja meg a lassú lekérdezési naplókat a webpanelen és az API-szolgáltatásokban.
- Ha a RAM nem elegendő, ne növelje öntudatlanul a PHP-FPM max_children értékét.
- Csökkentse a háttérterhelést gyorsítótár-rendszer használatával.
- A logrotate segítségével kezelheti a hibanaplókat, mielőtt azok növekednének.
Ez a cikk kifejezetten a PvPServer számára készült.