A. Pendahuluan
Saat mengakses atau mengelola website, kamu mungkin pernah menemukan pesan seperti “Internal Server Error”, “Bad Gateway”, atau “Not Found”. Pesan ini menunjukkan bahwa ada sesuatu yang tidak berjalan sesuai harapan di sisi server, aplikasi, atau konfigurasi website kamu.
Kode error tersebut menjadi petunjuk penting untuk membantu kamu menemukan sumber masalah dan menentukan langkah perbaikan yang tepat.
Panduan ini merangkum 10 error yang paling sering muncul beserta penyebab dan cara mengatasinya.
- Panduan Terkait:
B. Daftar Error dan Solusinya
Untuk memudahkan kamu memahami setiap kondisi, daftar ini dibagi menjadi tiga kelompok:
- Error Server (5xx): Masalah terjadi di dalam server VPS-mu (dibahas pada nomor 1-3).
- Error Akses (4xx): Masalah terjadi pada izin akses atau permintaan dari pengunjung (dibahas pada nomor 4-7).
- Error Koneksi (Lainnya): Masalah terjadi di level database, DNS, SSL, atau konfigurasi lainnya (dibahas pada nomor 8-10).
1. Error 500 (Internal Server Error)
a. Gejala:
Website menampilkan halaman kosong (blank page) atau pesan “Internal Server Error”. Ini berarti server menemukan masalah, tetapi tidak dapat memberikan detailnya secara langsung.
b. Penyebab Umum:
- Error pada Skrip: Kesalahan sintaks (syntax error) pada file
.php,.py, atau script backend lainnya. - Konfigurasi
.htaccessRusak: (Umum di server Apache) Ada aturan yang salah tulis di dalam file.htaccesskamu. - Kehabisan Memori: Script (misalnya PHP) mencoba menggunakan memori lebih banyak dari batas yang diizinkan.
c. Solusi:
- CEK ERROR LOG! Ini adalah langkah pertama dan paling penting. Error 500 selalu mencatat detail kesalahannya di log. Lokasi log bisa berbeda, tapi umumnya ada di:
/var/log/nginx/error.log(jika pakai Nginx)/var/log/apache2/error.log(jika pakai Apache)error_log(sering ada di dalam direktori website-mu, misalpublic_html/error_log)- Panduan Terkait:
- Rename
.htaccess: Jika kamu menggunakan Apache, coba ganti nama file.htaccessmenjadi.htaccess_backup. - Naikkan Limit Memori: Jika di log ada pesan
Allowed memory size of ... bytes exhausted, kamu perlu menaikkanmemory_limitdi filephp.ini.
2. Error 502 (Bad Gateway) / 503 (Service Unavailable)
a. Gejala:
Website menampilkan "502 Bad Gateway" (biasanya dari Nginx) atau "503 Service Unavailable".
b. Penyebab Umum:
Error ini terjadi ketika web server (Nginx) gagal mendapatkan respons dari layanan backend (PHP-FPM, Node.js, dll.) yang seharusnya memproses permintaan tersebut.
- Layanan backend (misal PHP-FPM) sedang mati atau crash.
- Socket atau port yang digunakan untuk komunikasi salah konfigurasi.
c. Solusi:
- Restart Layanan Backend: Seringkali ini adalah solusi tercepat.
# Contoh jika kamu pakai PHP 8.1 FPM sudo systemctl restart php8.1-fpm sudo systemctl restart nginx - Periksa Status Layanan: Jika restart gagal, periksa statusnya untuk melihat pesan error:
sudo systemctl status php8.1-fpm - Cek Penggunaan Resource: Error 503 juga bisa terjadi jika server kehabisan RAM.
- Panduan Terkait: Panduan Penggunaan Perintah htop di Linux
3. Error 504 (Gateway Timeout)
a. Gejala:
Browser loading sangat lama (biasanya 30-60 detik), lalu akhirnya menyerah dan menampilkan "504 Gateway Timeout".
b. Penyebab Umum:
Error 504 terjadi ketika web server (Nginx) berhasil terhubung ke layanan backend (PHP), namun layanan backend tersebut terlalu lama memproses permintaan hingga batas waktu (timeout) web server habis.
- Skrip aplikasi sedang menjalankan tugas yang sangat berat (misal: import ribuan data, query database yang sangat lambat).
c. Solusi:
- Optimalkan Skrip: Ini adalah solusi jangka panjang terbaik. Cari tahu kenapa skripmu berjalan sangat lambat.
- Panduan Terkait: Ini Dia Tips Ampuh Untuk Mengatasi Website Lambat
- Naikkan Nilai Timeout (Solusi Jangka Pendek): Jika skrip memang wajar berjalan lama, kamu bisa menaikkan batas waktu timeout di beberapa tempat:
- Di Konfigurasi Aplikasi: (Misal
php.ini, naikkanmax_execution_timedari30jadi300). - Di Konfigurasi Web Server: (Misal Nginx, tambahkan
fastcgi_read_timeout 300s;). - Setelah selesai, restart semua layanan terkait.
- Di Konfigurasi Aplikasi: (Misal
- Cek Resource: Gunakan
htopuntuk memastikan server tidak kehabisan CPU atau RAM.- Panduan Terkait: Panduan Penggunaan Perintah htop di Linux
4. Error 404 (Not Found)
a. Gejala:
Browser menampilkan pesan "404 Not Found" atau "Halaman tidak ditemukan". Ini artinya server merespons, tapi file atau halaman spesifik yang kamu minta tidak ada.
b. Penyebab Umum:
- URL Salah Ketik: Kamu atau pengunjung salah mengetik alamat URL.
- Halaman/File Terhapus: File atau halaman tersebut memang sudah tidak ada lagi di server.
- Konfigurasi URL Rewrite Salah: Aturan rewrite di
.htaccess(Apache) atautry_files(Nginx) tidak bisa menerjemahkan URL yang kamu minta ke file yang benar.
c. Solusi:
- Periksa Ulang URL: Pastikan kamu tidak salah ketik.
- Periksa Aturan Rewrite: Jika kamu pakai Apache, coba regenerasi file
.htaccess-mu (jika CMS-mu menyediakannya). Jika di Nginx, pastikan bloktry_filesdi konfigurasimu sudah benar (misaltry_files $uri $uri/ /index.php?$query_string;). - Periksa Konfigurasi Web Server: Pastikan
rootdirektori di Nginx/Apache sudah menunjuk ke folder yang benar.
5. Error 403 (Forbidden)
a. Gejala:
Browser menampilkan pesan "403 Forbidden" atau "You don't have permission to access this resource." Ini artinya server tahu file yang kamu minta ada, tapi kamu tidak diizinkan untuk melihatnya.
b. Penyebab Umum:
- File Permission Salah: Ini adalah 90% penyebab error 403. User yang menjalankan web server (misalnya
www-data) tidak memiliki izin baca (read) ke file tersebut. - Aturan
.htaccess: Ada aturan di.htaccessyang secara spesifik memblokir akses ke file, folder, atau IP-mu.
c. Solusi:
- Perbaiki File Permission: Ini adalah solusi utama. Kamu perlu memastikan semua direktori disetel ke
755dan semua file disetel ke644.# Pergi ke direktori website-mu cd /var/www/html/websiteku # Perbaiki izin direktori sudo find . -type d -exec chmod 755 {} \; # Perbaiki izin file sudo find . -type f -exec chmod 644 {} \; - Periksa Kepemilikan (Ownership): Pastikan file dan direktori dimiliki oleh user yang tepat (biasanya
www-data).sudo chown -R www-data:www-data /var/www/html/websiteku - Panduan Terkait:
6. Error 401 (Unauthorized)
a. Gejala:
Mirip dengan 403, tapi browser akan menampilkan pop-up login atau halaman login khusus, dengan pesan "401 Unauthorized" atau "Authentication Required."
b. Penyebab Umum:
Error 401 berarti "Autentikasi Dibutuhkan". Ini muncul karena kamu mencoba mengakses halaman yang dilindungi password di level server (misal .htpasswd) dan kamu belum memberikan kredensial login yang benar.
c. Solusi:
- Masukkan username dan password yang benar untuk area yang dilindungi tersebut.
- Periksa file
.htaccessdan.htpasswddi server untuk memastikan kredensialnya sudah benar.
7. Error 429 (Too Many Requests)
a. Gejala:
Website tiba-tiba memblokir kamu atau menampilkan pesan "429 Too Many Requests."
b. Penyebab Umum:
- Rate Limiting: Server (Nginx) atau aplikasi sengaja membatasimu karena kamu me-refresh halaman terlalu cepat.
- Firewall Aplikasi (WAF): Tool keamanan (seperti Fail2Ban) memblokir IP-mu karena mendeteksi aktivitas mencurigakan.
c. Solusi:
- Tunggu beberapa menit dan coba lagi.
- Jika kamu terblokir permanen, kamu harus masuk ke Konsol VPS untuk menghapus IP-mu dari daftar blokir (misal di Fail2Ban).
- Panduan Terkait: Instalasi Fail2Ban Sebagai Pengamanan VPS
8. Kesalahan Koneksi Database (Error Establishing a Database Connection)
a. Gejala:
(Umumnya terjadi pada aplikasi berbasis database seperti CMS WordPress). Website menampilkan halaman putih dengan teks "Error establishing a database connection."
b. Penyebab Umum:
Ini murni masalah antara aplikasimu dan database (MySQL/MariaDB).
- Kredensial Database Salah: Username, password, nama database, atau database host di file konfigurasi (misal
.env,config.php) salah. - Layanan Database Mati: Layanan MySQL/MariaDB di server kamu sedang crash atau mati.
- Firewall memblokir koneksi ke port database (misal port 3306).
c. Solusi:
- Periksa file Konfigurasi Aplikasi: Pastikan file koneksi databasemu (misal
.envatauconfig.php) memilikiDB_USER,DB_PASSWORD,DB_NAME, danDB_HOST(biasanyalocalhost) yang sudah 100% benar. - Periksa Status Layanan Database: Jalankan
sudo systemctl status mysql(ataumariadb) di server untuk memastikan layanannyaactive (running). - Cek Firewall dan Port: Pastikan port database (misal 3306) terbuka.
- Panduan Terkait:
- Perbaiki Database: Jika diduga rusak (corrupt), gunakan tool perbaikan database (misalnya
REPAIR TABLE).
9. Peringatan SSL & "Mixed Content"
a. Gejala:
Website bisa diakses, tapi browser menampilkan peringatan "Not Secure" atau "Koneksi Anda tidak pribadi." Atau, ikon gemboknya ada tapi disertai tanda seru kuning.
b. Penyebab Umum:
- Mixed Content: Kamu sudah memasang SSL (HTTPS), tapi di dalam halamanmu masih ada aset (gambar, CSS, JS) yang dipanggil menggunakan
http://. - Sertifikat Kedaluwarsa/Tidak Valid: Sertifikat SSL-mu sudah kedaluwarsa, atau sertifikat dipasang untuk domain yang salah.
c. Solusi:
- Perbaiki Mixed Content: Lakukan search-replace di database atau kode aplikasi untuk mengubah semua URL aset (
http://...) menjadihttps://.... - Perbarui Sertifikat: Jika kedaluwarsa, jalankan ulang perintah Certbot (
sudo certbot renew). - Periksa Konfigurasi SSL: Pastikan kamu mendaftarkan SSL untuk kedua versi domain (misal
-d domain.com -d www.domain.com) saat menggunakan Certbot.- Panduan Terkait: Kenali Error SSL yang Sering Kamu Jumpai dan Cara Mengatasinya
10. Error DNS (DNS_PROBE_FINISHED_NXDOMAIN)
a. Gejala:
Browser menampilkan "This site can’t be reached" atau "DNS_PROBE_FINISHED_NXDOMAIN". Ini error yang terjadi sebelum browser sempat berbicara dengan VPS-mu.
b. Penyebab Umum:
- Domain Belum Diarahkan: Kamu lupa mengarahkan A Record di DNS registrar-mu ke IP VPS yang benar.
- Masa Propagasi: Kamu baru saja mengganti DNS, dan butuh waktu (bisa 1-24 jam) agar perubahan itu tersebar ke seluruh internet.
- Domain Kedaluwarsa: Kamu lupa memperpanjang domainmu.
c. Solusi:
- Buka panel DNS (di tempat kamu beli domain, bukan di VPS) dan pastikan A Record untuk
@danwwwsudah menunjuk ke IP VPS-mu. - Gunakan tool eksternal seperti
whatsmydns.netuntuk memeriksa apakah IP-mu sudah terpropagasi.- Panduan Terkait: Tips Mengatasi Error DNS_PROBE_FINISHED_NXDOMAIN
- Bersihkan cache DNS di komputermu (
ipconfig /flushdnsdi Windows).
C. Kesimpulan
Kode error HTTP adalah sebuah petunjuk. Setiap kode memberikan informasi berharga untuk diagnosis. Langkah pertama yang tidak pernah salah adalah: Periksa file log error di servermu. Log adalah tempat di mana server mencatat detail teknis dari setiap masalah yang terjadi.
- Panduan Terkait: Log-Log Penting di Linux dan Cara Memeriksanya