502 Bad Gateway
Penggunaan
Kode status 502 Bad Gateway berarti server sedang bertindak sebagai proxy atau gateway bagi sebuah server upstream. Setelah meneruskan permintaan HTTP, server upstream tersebut mengembalikan respons yang tidak valid. Waktu yang dibutuhkan untuk menyelesaikan masalah ini tidak dapat diprediksi.
Ketika server asal mengembalikan kode status error HTTP, kode status yang sama beserta informasi terkait diharapkan diteruskan ke klien agar masalahnya terdeskripsikan seakurat mungkin.
Ketika proxy sama sekali tidak menerima respons dari server upstream, kode status 504 Gateway Timeout lebih tepat.
Catatan
502 Bad Gateway berarti proxy menerima respons tidak valid dari backend. Backend memang merespons, tetapi responsnya salah bentuk atau di luar dugaan. 504 Gateway Timeout berarti backend sama sekali tidak merespons dalam rentang waktu timeout. 502 menunjuk pada crash backend atau error protokol, sedangkan 504 menunjuk pada backend yang lambat atau tidak dapat dijangkau. Tidak satu pun dari kedua kode itu menandakan klien melakukan kesalahan.
Dampak SEO
Googlebot memperlakukan error 5xx sebagai sinyal untuk sementara menurunkan laju perayapan di seluruh situs. URL yang sebelumnya terindeks pada awalnya tetap dipertahankan, tetapi downtime yang berkepanjangan membuat Google menghapusnya dari indeks. Konten apa pun yang dikembalikan bersama respons 502 akan diabaikan. Dalam hal ini Google memperlakukan 500, 502, dan 503 secara identik. Error 5xx pada berkas robots.txt jauh lebih parah, bahkan ketika semua halaman lain di situs tersebut mengembalikan 200. Google menghentikan perayapan hingga 12 jam, lalu beralih ke salinan cache hingga 30 hari. Jika error tersebut bertahan, Google sepenuhnya menghapus situs itu dari indeks. Bingbot juga memperlakukan respons 5xx sebagai kegagalan perayapan. Error 5xx yang terus-menerus mencegah pengindeksan di Bing.
Contoh
Klien meminta sebuah sumber daya dan server merespons dengan kode status 502 Bad Gateway karena server upstream mengembalikan respons yang tidak valid.
Permintaan
GET /news HTTP/1.1
Host: example.com
Respons
HTTP/1.1 502 Bad Gateway
Content-Type: text/html; charset=UTF-8
Content-Length: 134
<html>
<head>
<title>Bad Gateway</title>
</head>
<body>
<p>The server is unreachable at this time.</p>
</body>
</html>
Cara memperbaiki
Periksa /var/log/nginx/error.log atau log error proxy yang setara terlebih dahulu. Pesan log tersebut mengidentifikasi mode kegagalan upstream: connection refused, koneksi yang tertutup prematur, atau header tidak valid.
Penyebab utama yang umum beserta perbaikannya:
Pada penyiapan reverse proxy Apache, periksa direktif ProxyPass/ProxyPassReverse dan pastikan mod_proxy serta mod_proxy_http sudah diaktifkan. Jalankan apachectl configtest sebelum melakukan restart.
Setelah menerapkan perbaikan, jalankan nginx -t untuk memvalidasi konfigurasi, lalu muat ulang.
Referensi kode
.NET
HttpStatusCode.BadGateway
Rust
http::StatusCode::BAD_GATEWAY
Rails
:bad_gateway
Go
http.StatusBadGateway
Symfony
Response::HTTP_BAD_GATEWAY
Python3.5+
http.HTTPStatus.BAD_GATEWAY
Java
java.net.HttpURLConnection.HTTP_BAD_GATEWAY
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_BAD_GATEWAY
Angular
@angular/common/http/HttpStatusCode.BadGateway