Rješenje za 502 Bad Gateway i 504 Gateway Timeout Error na Linux poslužitelju
Vodič korak po korak za rješavanje problema Nginxa, Apachea, PHP-FPM-a i isteka vremena servisa.
vidjeti na web stranicama 502 Loš pristupnik i 504 Gateway Timeout pogreške se obično javljaju jer web poslužitelj ne dobiva točan odgovor od pozadinske usluge. Ova usluga može biti PHP-FPM, Apache backend, Node.js aplikacija, API usluga za ploču igara ili druga aplikacija iza proxyja.
Ove su pogreške posebno česte u hostingu, panelu za igre, WHMCS-u, Pterodactyl-u, prilagođenom panelu za administraciju i sustavima za pokretanje na webu.
1. Razlika između pogreške 502 i 504
- 502 Loš pristupnik: Web poslužitelj ne može se povezati s pozadinskom uslugom ili prima iskrivljen odgovor.
- 504 Gateway Timeout: Čini se da pozadinska usluga odgovara, ali odgovor se ne vraća na vrijeme.
Dakle, 502 je više pad veze/usluge, a 504 sporost ili problem isteka vremena.
2. Provjera statusa usluge
Najprije provjerite rade li web poslužitelj i PHP usluge.
systemctl status nginx systemctl status apache2 systemctl status php-fpm
Na CentOS, AlmaLinux ili Rocky Linux sustavima, PHP-FPM usluga može se zvati:
systemctl status php-fpm systemctl status httpd
Ako je usluga prestala, ponovno je pokrenite:
systemctl restart nginx systemctl restart php-fpm
3. Pregled datoteka dnevnika
Nije ispravno nastaviti s nagađanjem za pogreške 502 i 504. Dnevnik pokazuje pravi uzrok pogreške.
tail -n 100 /var/log/nginx/error.log tail -n 100 /var/log/apache2/error.log
Na sustavima koji se temelje na CentOS-u:
tail -n 100 /var/log/httpd/error_log
U zapisnicima se mogu vidjeti sljedeće izjave:
- povezivanje() nije uspjelo: Nije moguće povezati se s pozadinskom uslugom.
- uzvodno isteklo vrijeme: Pozadinska usluga odgovara kasno.
- veza odbijena: Usluga ne radi ili postoji prosljeđivanje na krivi priključak.
- dopuštenje odbijeno: Postoji problem s utičnicom ili dozvolom datoteke.
4. PHP-FPM kontrola utičnice ili priključka
Nginx se povezuje na PHP-FPM putem utičnice ili priključka. PHP-FPM staza u Nginx konfiguracijskoj datoteci i stvarna PHP-FPM vrijednost slušanja moraju biti iste.
grep -R "fastcgi_pass" /etc/nginx/sites-enabled/ grep -R "listen =" /etc/php/*/fpm/pool.d/www.conf
Na primjer, ako Nginx koristi:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
Isti socket treba slušati na PHP-FPM strani:
listen = /run/php/php8.2-fpm.sock
5. Povećanje postavki vremenskog ograničenja
Pogreške 504 mogu se primiti u velikim pločama za obradu, igranim tržištima, API-jima ili sporim PHP skriptama. Nginx timeout vrijednosti mogu se povećati.
nano /etc/nginx/nginx.conf
Sljedeće vrijednosti mogu se dodati bloku http ili relevantnom bloku poslužitelja:
proxy_connect_timeout 300; proxy_send_timeout 300; proxy_read_timeout 300; fastcgi_read_timeout 300;
Testirajte postavke i ponovno pokrenite Nginx:
nginx -t systemctl restart nginx
6. Provjera PHP-FPM ograničenja procesa
Kada se promet poveća, ograničenja PHP-FPM transakcija mogu biti nedovoljna. U tom slučaju zahtjevi se stavljaju u red čekanja i dolazi do vremenskog ograničenja.
nano /etc/php/8.2/fpm/pool.d/www.conf
Primjer postavki:
pm = dynamic pm.max_children = 30 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 10
Ove vrijednosti treba prilagoditi prema količini RAM-a poslužitelja. Postavljanje previsoke vrijednosti povećava potrošnju RAM-a.
Uobičajene greške
- Mijenjanje postavki bez gledanja log datoteke
- Ne ažurira se staza Nginx utičnice iako se PHP verzija promijenila
- Neispravljanje stvarnog sporog upita povećanjem vremenskog ograničenja
- Povećanje PHP-FPM ograničenja bez izračunavanja RAM-a
- Ponovno pokretanje usluge bez testiranja Nginx konfiguracije
FAQ
Uzrokuje li pogrešku 502 uvijek Nginx?
Ne. Nginx je samo onaj koji pokazuje pogrešku. Pravi problem može biti u PHP-FPM-u, Apache pozadini, Node.js aplikaciji ili nekoj drugoj usluzi.
Je li povećanje vremenskog ograničenja konačno rješenje za pogreške 504?
Ne uvijek. Povećanje vremenskog ograničenja pruža privremeno olakšanje. Pravo rješenje je pronaći spore upite, teške procese ili probleme s performansama.
Je li sigurno ponovno pokrenuti PHP-FPM?
Općenito je siguran, ali na aktivne zahtjeve može utjecati kratko vrijeme. U prometnim sustavima treba dati prednost satima s niskim prometom.
Preporuke za izvedbu
- Redovito provjeravajte PHP-FPM verziju i stazu utičnice.
- Ispitajte spore zapise upita u web panelu i API uslugama.
- Ako RAM-a nije dovoljno, nemojte nesvjesno povećavati vrijednost PHP-FPM max_children.
- Smanjite opterećenje pozadine korištenjem sustava predmemorije.
- Upravljajte zapisima pogrešaka prije nego što narastu uz logrotate.
Ovaj članak je posebno pripremljen za PvPServer.