502 Bad Gateway: mida see tegelikult tähendab ja kuidas seda parandada

Avad oma veebisaidi ja lehekülje sisu asemel näed tühja lehte tekstiga 502 Bad Gateway. See näeb murettekitav välja, kuid enamikul juhtudel on lahendus lihtne. Vaatame, mis toimub ja kuidas sait taas tööle panna.
Mida 502 tegelikult tähendab?
Kui külastaja avab lehe, liigub päring läbi kahe kihi: eesliidese veebiserveri (tavaliselt Nginx) ja tagaliidese rakendusserveri (PHP-FPM, Apache, Node.js või muu). Nginx võtab päringu vastu, edastab selle tagaliidesele ja ootab vastust.
502 Bad Gateway tähendab, et Nginx üritas tagaliideselt vastust saada, kuid sai vigase vastuse või ei saanud vastust üldse. Tagaliides kas krahhas, keeldus ühendusest või tagastas midagi, millest Nginx aru ei saanud.
Levinud väärarvamus: 502 ei tähenda, et sinu server on maas. Server ise töötab korralikult — probleem on Nginxi taga asuva rakendusega.
Kõige levinumad põhjused
Tagaliidese teenus on peatunud. See on peamine põhjus. PHP-FPM krahhas, Apache hangus või Node.js protsess suri vaikselt. Nginxil pole millega suhelda.
Serveril on RAM-i otsas. Kui mälu napib, võib Linux automaatselt ressursimahukaid protsesse tappa. Seda mehhanismi nimetatakse OOM killeriks ja PHP-FPM või MySQL on tavaliselt esimesed ohvrid. Kui see juhtub regulaarselt, kaalu swap-faili lisamist puhvrina.
PHP-FPM töötajate pool on ammendunud. Kui saidi samaaegsete päringute arv ületab PHP-FPM võimekuse, hakkavad uued päringud järjekorda kogunema ja aeguvad lõpuks. See juhtub sageli siis, kui otsingumootori robotid roomavad sinu saiti liiga agressiivselt — kirjutasime sellest oma robotite blokeerimise juhendis.
Valesti seadistatud soket või port. Nginx ootab PHP-FPM-i leidmist konkreetselt Unix-soketilt või TCP-pordilt. Kui Nginxi konfiguratsioonis olev tee ei ühti PHP-FPM konfiguratsiooniga, näed 502 vigu kohe pärast igat muudatust.
Kuidas diagnoosida
Järgmiste sammude tegemiseks ühendu oma serveriga SSH kaudu. Kuidas seda teha, saad lugeda meie SSH artiklist.
Samm 1. Kontrolli, kas tagaliides töötab
Kontrolli oma tagaliidese teenuse olekut:
sudo systemctl status php8.2-fpm
Asenda php8.2-fpm oma tegeliku PHP versiooniga või tagaliidese teenuse nimega. Kui väljund näitab inactive (dead) või failed, on see sinu probleem. Taaskäivita teenus:
sudo systemctl restart php8.2-fpm
Seejärel kontrolli olekut uuesti, et veenduda teenuse eduka käivitumise.
Samm 2. Kontrolli Nginxi veapalki
Veapalk ütleb peaaegu alati täpselt, mis valesti läks:
sudo tail -30 /var/log/nginx/error.log
Kui kasutad FASTPANEL®-i, saad logisid vaadata ka otse veebiliidesest: ava saidi kaart, mine jaotisse „Logs" ja vaata vahekaarti „Frontend Error Log".
Siin on kõige levinumad veateated ja nende tähendused:
connect() failed - Connection refused — tagaliidese teenus ei tööta. Taaskäivita see nagu sammus 1.
connect() failed - No such file or directory — Nginx üritab jõuda Unix-soketini, mida pole olemas. Kontrolli, et Nginxi konfiguratsioonis olev soketi tee ühtib sellega, mida PHP-FPM tegelikult loob.
upstream sent too big header — tagaliides tagastas HTTP päised, mis on vaikimisi puhvri jaoks liiga suured. Lisa need read oma Nginxi saidi konfiguratsiooni server plokki:
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
Pärast muutmist kontrolli konfiguratsiooni ja laadi Nginx uuesti:
sudo nginx -t && sudo systemctl reload nginx
Samm 3. Kontrolli serveri ressursse
Kui available veerg näitab alla 100–200 MB vaba mälu, on serveril tõenäoliselt RAM-i otsas. Kontrolli, mis seda tarbib:
ps aux --sort=-%mem | head -10
Kui mäluprobleem on algpõhjus, on kiireim ajutine lahendus swap-faili lisamine. Kuid kettal asuv swap on palju aeglasem kui RAM ja ei ole püsiv lahendus. Kui server jääb regulaarselt mälust tühja, on aeg kas rakendusi optimeerida või liikuda suurema RAM-iga plaanile.
Kokkuvõte
502 Bad Gateway on peaaegu alati tagaliidese probleem — krahhinud teenus, ammendunud töötajad või ebapiisav mälu. Kontrolli tagaliidese olekut, loe Nginxi veapalki ja vaata oma ressursikasutust. Üldjuhul leiad vastuse mõne minutiga.
Kui eelistad mitte üksi sellega tegeleda, pakume kodu.cloud-is tasuta ööpäevaringset tehnilist tuge iga VPS-i ja dedikeeritud serveriga. Kõik meie kliendid saavad ka FASTPANEL® Extended tasuta, mis muudab logide analüüsi ja teenuste haldamise veebiliidese kaudu oluliselt lihtsamaks.