502 Bad Gateway termasuk kode error yang cukup berguna, karena memberi tahu sesuatu yang spesifik: permintaan Anda sampai ke sebuah server, server itu meneruskannya ke server lain di belakangnya, dan jawaban yang kembali tidak bisa dipakai. Situs tidak sekadar "mati" — ada satu mata rantai yang putus.
Mengetahui mata rantai mana mempersempit pencarian secara drastis. Artikel ini menjelaskan apa yang dimaksud "gateway" dalam praktik, beda 502 dengan 500 dan 504 yang sering tertukar, penyebab diurutkan dari yang paling sering terbukti, serta apa yang realistis bisa Anda lakukan bila memakai shared hosting.
Arti "Bad Gateway" Sebenarnya
Sebagian besar website tidak dilayani oleh satu program saja. Server depan — biasanya Nginx, Apache atau CDN seperti Cloudflare — menerima permintaan Anda lalu menyerahkannya ke sesuatu di belakangnya: PHP-FPM, proses Node, aplikasi Python, atau web server lain. Dalam susunan itu, server depan berperan sebagai gateway.
502 adalah cara server depan mengatakan dengan jujur bahwa ia sudah menjalankan tugasnya dan yang di belakangnya tidak. Entah tidak menjawab sama sekali, menjawab dengan format yang tidak bisa dibaca, atau memutus koneksi di tengah jawaban. Server depan sendiri sehat — justru itulah sebabnya Anda menerima halaman error yang rapi, bukan timeout.
Beda 502 dengan 500 dan 504
Ketiganya sering dianggap sama sebagai "error server", dan itu membuat orang mencari di tempat yang keliru. Padahal ketiganya menunjuk komponen yang berbeda.
| Kode | Artinya | Periksa di mana lebih dulu |
|---|---|---|
| 500 Internal Server Error | Aplikasi berjalan lalu melempar error | Kode Anda, log error PHP, plugin atau tema yang rusak |
| 502 Bad Gateway | Backend memberi jawaban kosong atau tidak valid | Apakah proses backend berjalan? Crash atau kehabisan memori? |
| 503 Service Unavailable | Server hidup tetapi sengaja tidak melayani | Mode maintenance, proteksi beban, atau antrean penuh |
| 504 Gateway Timeout | Backend terjangkau tetapi menjawab terlalu lambat | Query lambat, API eksternal lambat, pengaturan timeout |
Penyebab Umum, Diurutkan dari yang Paling Sering
- Proses backend crash atau memang belum dijalankan. PHP-FPM, Node atau service aplikasi tidak berjalan sehingga tidak ada lawan bicara bagi server depan. Ini penyebab paling sering, jauh di atas yang lain.
- Server kehabisan memori dan kernel mematikan backend. Cari catatan OOM-killer di log sistem — prosesnya hilang tanpa meninggalkan error sendiri, dan itulah yang menghasilkan 502.
- Backend kelebihan beban dan menolak koneksi baru. Semua worker PHP-FPM sibuk sehingga permintaan baru langsung ditolak, bukan diantrekan.
- Target proxy salah setel. Setelah deployment atau perubahan konfigurasi, server depan mengarah ke port atau socket yang keliru. Kalau 502 muncul persis setelah sebuah perubahan, mulailah dari sini.
- Aturan firewall di antara kedua komponen. Sering terjadi pada susunan multi-server ketika front end dan aplikasi berada di mesin berbeda.
- Backend mengembalikan keluaran yang rusak. Fatal error PHP yang tercetak sebelum header, atau proses yang menulis ke stdout padahal tidak seharusnya, menghasilkan jawaban yang tidak bisa diproses gateway.
- Masalah pada CDN atau reverse proxy. Kalau Anda memakai Cloudflare, 502 bisa berasal dari Cloudflare sendiri, bukan dari origin — halaman error-nya biasanya menyebutkan yang mana.
Periksa dengan Urutan Ini
Urutan berikut disusun untuk menyingkirkan penyebab paling mungkin dengan usaha paling kecil, sekaligus menghindari kesalahan klasik yaitu me-restart apa saja sampai kebetulan berubah.
- Pastikan backend memang berjalan. Di server Linux: "systemctl status php-fpm" atau perintah setara untuk stack Anda. Kalau mati, itu jawabannya dan pertanyaan berikutnya adalah kenapa.
- Baca log error server depan sebelum me-restart apa pun. Nginx menulis alasan sebenarnya ke /var/log/nginx/error.log — pesan "connect() failed", "no live upstreams" dan "recv() failed" masing-masing menunjuk arah berbeda. Restart lebih dulu akan menghapus bukti ini.
- Periksa memori bebas dan cari OOM killer di log sistem. Kalau backend terus mati saat beban naik tanpa mencatat error sendiri, kernel yang mematikannya dan mesinnya terlalu kecil untuk trafik tersebut.
- Pastikan target proxy cocok dengan tempat backend benar-benar mendengarkan — port atau path socket di konfigurasi server depan versus di konfigurasi backend. Salah satu digit saja cukup.
- Restart backend, lalu server depan, dengan urutan itu. Baru sekarang, setelah bukti terkumpul.
- Kalau muncul hilang bukan terus-menerus, cocokkan dengan grafik trafik. 502 yang muncul saat puncak dan hilang saat sepi adalah masalah kapasitas, bukan salah konfigurasi, dan tidak akan sembuh oleh perubahan setting apa pun.
Apa yang Bisa Dilakukan di Shared Hosting
Di shared hosting Anda tidak bisa memeriksa PHP-FPM atau membaca log sistem, jadi sebagian besar langkah di atas tertutup. Itu bukan berarti Anda tidak berdaya, tetapi pendekatannya memang berbeda.
Mulailah dengan memastikan apakah error ini hanya menimpa situs Anda atau semua situs di server tersebut — kalau penyedia punya halaman status, periksa di sana lebih dulu. Lalu pikirkan apa yang berubah di sisi Anda: pembaruan plugin, pergantian tema, atau skrip yang tiba-tiba memakai memori jauh lebih besar. Mengembalikan perubahan itu biasanya lebih cepat daripada mendiagnosisnya.
Kalau 502 terus kembali pada trafik normal, jawaban jujurnya sering kali akun tersebut sudah melampaui kapasitas shared hosting. Di server bersama, resource Anda dibagi dengan semua akun lain, dan lonjakan trafik tetangga bisa menjatuhkan situs Anda tanpa kesalahan apa pun dari pihak Anda. Pindah ke VPS dengan CPU dan RAM khusus menghapus seluruh kategori masalah ini, sekaligus memberi Anda log yang diperlukan untuk mendiagnosis masalah berikutnya sendiri.
Berhenti berbagi server dengan lonjakan trafik orang lain
Cloud VPS dengan CPU dan RAM khusus, akses root penuh dan log asli yang bisa Anda baca — mulai ฿150/bulan.
Pertanyaan yang Sering Diajukan
Apakah 502 kesalahan saya atau penyedia hosting?
Tergantung komponen mana yang gagal. Kalau aplikasi Anda crash atau kehabisan memori, itu sisi Anda. Kalau infrastruktur atau jaringan penyedia yang rusak, itu sisi mereka. Cara tercepat mengetahuinya adalah memeriksa apakah situs lain di server yang sama ikut terpengaruh — kalau ya, bukan kode Anda penyebabnya.
Kenapa 502 muncul hilang, bukan rusak terus?
502 yang muncul hilang hampir selalu berarti batas kapasitas, bukan salah konfigurasi. Saat beban naik, backend kehabisan worker atau memori, membuang permintaan, lalu pulih ketika trafik turun. Sebaliknya, salah konfigurasi merusak setiap permintaan secara konsisten.
Apakah 502 merusak SEO?
Kalau sebentar, tidak. Google mencoba lagi dan menganggap gangguan singkat sebagai hal sementara. 502 yang berlangsung berhari-hari lain cerita — laju crawl melambat dan halaman bisa hilang dari indeks. Patokan praktisnya: hitungan jam masih aman, hitungan hari tidak.
Saya memakai Cloudflare. Bagaimana tahu 502 berasal dari Cloudflare atau server saya?
Halaman error Cloudflare punya identitas visual sendiri, memuat ray ID dan diagram yang menunjukkan titik mana yang gagal. 502 polos tanpa gaya berarti berasal dari origin Anda. Kalau diagramnya menunjukkan kegagalan di origin, Cloudflare baik-baik saja dan masalahnya di sisi Anda.
GUIDES
Artikel terkait
Lanjut membaca topik serupa
500 Internal Server Error — Penyebab dan Cara Mengatasinya
500 adalah error paling tidak informatif di web: artinya "ada yang salah dan saya tidak akan bilang apa". Kabar baiknya, server hampir selalu menuliskan alasan sebenarnya ke sebuah file log. Panduan ini menunjukkan di mana log itu dan urutan pemeriksaan yang paling cepat menemukan biangnya.
Baca selengkapnya504 Gateway Timeout — Penyebab dan Cara Mengatasinya
504 bukan berarti backend mati, melainkan backend hidup tapi terlalu lambat. Itu mengubah tempat Anda mencari: bukan log crash, melainkan query atau panggilan eksternal yang berjalan lebih lama daripada kesabaran server.
Baca selengkapnyaERR_CONNECTION_TIMED_OUT — Penyebab dan Cara Mengatasinya
Halaman memuat lama lalu Chrome menyerah dengan pesan ERR_CONNECTION_TIMED_OUT. Panduan ini menunjukkan cara memastikan dalam dua menit apakah masalahnya ada di sisi Anda atau di server, lalu langkah perbaikan untuk masing-masing sisi.
Baca selengkapnya