Liigu peamise sisu juurde

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

· 3 min lugemine
Customer Care Engineer

502-bad-gateway-error-nginx-php-fpm-fix-guide

Avad oma veebisaidi ja sisu asemel näed tühja lehte, millel on kirjas 502 Bad Gateway. See näeb hirmutav välja, kuid enamasti on lahendus lihtne. Vaatame, mis toimub ja kuidas oma sait uuesti tööle saada.

Mida 502 tegelikult tähendab?

Kui külastaja taotleb lehte, läbib päring tavaliselt kaks kihti: esiliidese veebiserveri (enamasti Nginx) ja taustsüsteemi rakenduserveri (PHP-FPM, Apache, Node.js või midagi muud). Nginx võtab päringu vastu, edastab selle taustsüsteemile ja jääb vastust ootama.

502 Bad Gateway tähendab, et Nginx üritas saada taustsüsteemilt vastust, kuid sai midagi vigast või ei saanud üldse vastust. Taustsüsteem kas jooksis kokku, keeldus ühendusest või tagastas midagi, millest Nginx ei saanud aru.

info

Levinud eksiarvamus: 502 ei tähenda, et sinu server on maas. Server ise töötab - hädas on Nginxi taga olev rakendus.

Kõige levinumad põhjused

Taustsüsteemi teenus on peatunud. See on põhjus number üks. PHP-FPM jooksis kokku, Apache hangus või Node.js-i protsess suri vaikselt. Nginxil pole millegagi suhelda.

Serveri RAM hakkab otsa saama. Kui mälu jääb väheseks, võib Linux ressursimahukad protsessid automaatselt lõpetada. Seda mehhanismi nimetatakse OOM killer-iks ning PHP-FPM või MySQL on tavaliselt selle esimesed ohvrid. Kui seda juhtub regulaarselt, kaalu turvavõrguna saalefaili lisamist.

PHP-FPM-i tööprotsesside kogum on ammendunud. Kui sinu sait saab rohkem samaaegseid päringuid, kui PHP-FPM suudab töödelda, lähevad uued päringud järjekorda ja aeguvad lõpuks. See juhtub sageli siis, kui otsingumootorite robotid roomavad sinu saiti liiga agressiivselt - kirjutasime sellest, kuidas sellega toime tulla, oma robotite blokeerimise juhendis.

Pistikupesa või port on valesti seadistatud. Nginx eeldab, et leiab PHP-FPM-i kindlast Unixi pistikupesast või TCP-pordist. Kui Nginxi konfiguratsiooni tee ei ühti PHP-FPM-i konfiguratsiooniga, näed 502 tõrkeid kohe pärast mis tahes muudatust.

Kuidas seda diagnoosida

Järgmiste sammude tegemiseks ühendu oma serveriga SSH kaudu. Kuidas seda teha, saad teada meie SSH artiklist.

1. samm. Kontrolli, kas taustsüsteem töötab

Kontrolli oma taustsüsteemi teenuse olekut:

sudo systemctl status php8.2-fpm

Asenda php8.2-fpm oma tegeliku PHP versiooni või taustsüsteemi teenuse nimega. Kui väljundis on kirjas inactive (dead) või failed, ongi see sinu probleem. Taaskäivita see:

sudo systemctl restart php8.2-fpm

Seejärel kontrolli olekut uuesti, et veenduda selle edukas käivitumises.

2. samm. Kontrolli Nginxi tõrkelogi

Tõrkelogi ü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 veebiliideses: ava saidi kaart, mine jaotisse "Logs" ja kontrolli vahekaarti "Frontend Error Log".

Siin on kõige levinumad tõrketeated ja nende tähendus:

connect() failed - Connection refused - taustsüsteemi teenus ei tööta. Taaskäivita see, nagu on näidatud 1. sammus.

connect() failed - No such file or directory - Nginx üritab jõuda Unixi pistikupesani, mida ei ole olemas. Kontrolli, et Nginxi konfiguratsioonis olev pistikupesa tee ühtiks sellega, mida PHP-FPM tegelikult loob.

upstream sent too big header - taustsüsteem tagastas HTTP päised, mis on vaikimisi puhvri jaoks liiga suured. Lisa need read oma Nginxi saidi konfiguratsiooni server ploki sisse:

fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;

Pärast muutmist testi konfiguratsiooni ja laadi Nginx uuesti:

sudo nginx -t && sudo systemctl reload nginx

3. samm. Kontrolli serveri ressursse

free -h

Kui veerus available on vähem kui 100-200 MB vaba mälu, on sinu serveril tõenäoliselt RAM otsa saamas. Kontrolli, mis seda kasutab:

ps aux --sort=-%mem | head -10
hoiatus

Kui algpõhjus on mälupuudus, on kiireim ajutine lahendus saalefaili lisamine. Kuid kettal olev saale on RAM-ist palju aeglasem ja seda ei tohiks pidada püsivaks lahenduseks. Kui sinu serveril saab mälu regulaarselt otsa, on aeg kas oma rakendusi optimeerida või minna üle paketile, kus on rohkem RAM-i.

Kokkuvõte

502 Bad Gateway on peaaegu alati taustsüsteemi probleem - kokku jooksnud teenus, ammendunud tööprotsessid või liiga vähe mälu. Kontrolli taustsüsteemi olekut, loe Nginxi tõrkelogi ja vaata oma ressursikasutust. Valdavas enamuses juhtudest leiad vastuse mõne minutiga.

Kui te ei soovi sellega üksi tegeleda, pakume kodu.cloudis tasuta 24/7 tehnilist tuge iga VPS-i ja pühendatud serveri puhul. Kõik meie kliendid saavad ilma lisatasuta ka FASTPANEL® Extendedi, mis teeb logide analüüsi ja teenuste haldamise veebiliidese kaudu märkimisväärselt lihtsamaks.