KING VERSE

System Engineering & Incident Reports

SYSTEM RESOLVED & HEALTHY Home Ninja Crew Live
POST-MORTEM & ARSITEKTUR

Penyelesaian Insiden 502 Bad Gateway

Laporan komprehensif investigasi masalah HTTP 502 Bad Gateway pada domain web.kingverse.cloud ketika mengakses endpoint /dashboards/clan/realtime, analisa akar masalah (root cause), mapping port microservices, serta langkah perbaikan yang diterapkan.

Domain Terdampak
web.kingverse.cloud
Kode Error
HTTP 502 Bad Gateway
Waktu Remediasi
16 Agustus 2026
Status Akhir
Normal & Terverifikasi 200 OK

1. Apa Itu Error 502 Bad Gateway?

Status kode HTTP 502 Bad Gateway terjadi ketika server web Nginx (yang bertindak sebagai Reverse Proxy / Gateway) mencoba meneruskan request dari browser klien ke aplikasi backend di belakangnya (upstream server), namun koneksi ke backend tersebut gagal atau ditolak (Connection refused).

A

Mekanisme Gateway

Nginx menerima permintaan HTTPS port 443 dari pengguna, lalu memeriksa aturan routing (location /...) untuk menentukan aplikasi backend mana yang harus merespons (misal Node.js, Python FastAPI, atau Next.js).

B

Titik Kegagalan (Failure Point)

Jika Nginx diarahkan ke port upstream yang tidak ada aplikasinya atau port tersebut mati, Nginx tidak menerima respon balik sehingga mengeluarkan halaman default: 502 Bad Gateway - nginx/1.24.0 (Ubuntu).

2. Temuan Investigasi & Log Server

Berdasarkan pemeriksaan log error Nginx pada /var/log/nginx/error.log, ditemukan entri kegagalan koneksi upstream sebagai berikut:

# Cuplikan log /var/log/nginx/error.log
2026/08/16 16:20:43 [error] connect() failed (111: Connection refused) while connecting to upstream,
client: 10.10.10.251, server: web.kingverse.cloud,
request: "GET /dashboards/clan/realtime HTTP/1.1",
upstream: "http://127.0.0.1:3080/dashboards/clan/realtime",
host: "web.kingverse.cloud"

Dua Faktor Utama Penyebab:

  • Konfigurasi Port Upstream Typo / Usang (3080 vs 3000): Nginx sebelumnya diatur untuk meneruskan route /dashboards dan chunk /_next/ ke port 3080. Tidak ada process server lokal yang berjalan di port 3080 (aplikasi Next.js Command Center berjalan di port 3000).
  • Perubahan Struktur Routing Realtime Crew: Platform Realtime Crew Analytics telah distandarisasi di Next.js standalone dengan prefix /ninja-crew pada port 3050. Ketika pengguna mengakses link lama /dashboards/clan/realtime, belum ada aturan redirect otomatis yang mengarahkannya.
  • Intersepsi Route Admin Laravel: Regex lama menyertakan kata kunci admin yang sempat menabrak route Filament/Blade backend Laravel.

3. Solusi & Perubahan yang Diterapkan

Telah dilakukan update pada konfigurasi virtual host Nginx /etc/nginx/sites-enabled/king-verse.conf:

# 1. Alias & Redirect Pintar untuk Dashboard Realtime
location ^~ /dashboards/clan {
    return 301 /ninja-crew;
}

location ^~ /dashboards/realtime {
    return 301 /ninja-crew;
}

location ^~ /dashboards/shadow-war {
    return 301 /sw/leaderboard/realtime;
}

location ^~ /dashboards {
    return 301 /dashboard;
}

# 2. Next.js App Proxy (Diarahkan ke Port Aktif 3000)
location ~ ^/(dashboard|crew|events|system|docs|shadow-war|players|analytics|tools|settings|logos|api/sw)(/|$) {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

# 3. Next.js Static Chunks /_next/
location /_next/ {
    proxy_pass http://127.0.0.1:3000/_next/;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
}

4. Pemetaan Port & Layanan KingVerse

Daftar port microservices yang aktif dan terdaftar di PM2 / Systemd:

Port Service Name Technology Endpoint URL Publik Status
3000 nextjs-kingverse Next.js 16 (App Router) /dashboard, /crew, /leaderboard ONLINE
3050 ninja-realtime-frontend Next.js 14 (Realtime Crew) /ninja-crew ONLINE
8010 ninja-realtime-backend Python FastAPI + SSE /ninja-crew/api/realtime, /api/crew ONLINE
3010 shadow-war-frontend Next.js (Shadow War UI) /sw/leaderboard/realtime ONLINE
8000 shadow-war-backend Python FastAPI Engine /sw/leaderboard/realtime/api/ ONLINE
8007 laravel-main PHP 8.3 Laravel + Filament /, /admin, /joki, /backend ONLINE
3001 ns-api-server Node.js Express /api-relay/ ONLINE
3002 ns-socket-relay Node.js Socket.IO /socket.io/ ONLINE
3003 ns-sse-relay Node.js SSE Server /sse ONLINE

5. Panduan Pemeliharaan & Pencegahan

Jika di masa depan muncul status 502 Bad Gateway pada salah satu fitur, jalankan pengecekan cepat berikut di server:

# 1. Cek status semua service PM2
pm2 list

# 2. Cek apakah port backend yang dituju sedang aktif (listening)
ss -tulpn | grep -E '3000|3050|3010|8007|8010|8000'

# 3. Cek log error Nginx secara realtime
tail -f /var/log/nginx/error.log

# 4. Restart service yang mengalami error
pm2 restart <service-name>
sudo systemctl reload nginx