Debugging Nginx Web Server: Solusi Error Log & Performa

Debugging Nginx web server menuntut pemeriksaan sistematis pada file log kesalahan (error log), pengujian sintaks konfigurasi, serta pemantauan komunikasi antara Nginx dan hulu (upstream) seperti PHP-FPM atau Node.js. Langkah pertama yang paling krusial adalah menemukan lokasi file log default dan mengonfigurasi tingkat pencatatan (log level) menjadi debug untuk mendapatkan detail penuh.

Secara default, file error log Nginx pada sistem berbasis Linux Debian/Ubuntu terletak di /var/log/nginx/error.log, sedangkan akses log berada di /var/log/nginx/access.log. Untuk mendiagnosis masalah secara real-time saat terjadi lonjakan trafik atau kegagalan koneksi, gunakan utilitas baris perintah standar Linux yang dikombinasikan dengan filter spesifik.

Tabel Perintah Esensial Debugging Nginx

Tujuan Diagnostik Perintah Terminal (CLI) Penjelasan Teknis
Uji Konfigurasi sudo nginx -t Memeriksa kesalahan sintaks dan direktif sebelum me-reload server.
Pantau Log Real-time tail -f /var/log/nginx/error.log Melihat error terbaru secara langsung saat request masuk.
Muat Ulang Konfigurasi sudo systemctl reload nginx Menerapkan perubahan tanpa memutus koneksi klien yang sedang aktif.
Cek Proses & Port sudo netstat -tulpn | grep nginx Memastikan Nginx berjalan pada port 80/443 dan mendengarkan antarmuka yang benar.

Mengaktifkan Mode Debug Log

Secara bawaan, Nginx mencatat level error. Untuk mengubahnya menjadi tingkat debug, Anda harus menyunting blok main di dalam file konfigurasi utama /etc/nginx/nginx.conf. Perlu dicatat bahwa log debug menghasilkan ukuran file yang sangat besar dalam waktu singkat, sehingga hanya disarankan untuk lingkungan pengujian atau saat investigasi insiden kritis.

http {
    # Mengubah error log dengan level debug
    error_log /var/log/nginx/error.log debug;
    
    server {
        listen 80;
        server_name example.com;
        
        location / {
            root /var/www/html;
            index index.html index.htm;
        }
    }
}

Mengatasi Error Umum Nginx

1. 502 Bad Gateway

Error ini menandakan bahwa Nginx bertindak sebagai reverse proxy tetapi gagal berkomunikasi dengan server hulu (upstream), misalnya PHP-FPM atau aplikasi Node.js. Langkah perbaikannya:

  • Periksa apakah service hulu sedang berjalan: sudo systemctl status php8.2-fpm.
  • Verifikasi jalur soket Unix pada blok fastcgi_pass di file konfigurasi virtual host, pastikan cocok dengan direktori aktual soket PHP-FPM (contoh: unix:/run/php/php8.2-fpm.sock).
  • Periksa batas waktu eksekusi (timeout) pada direktif proxy_read_timeout atau fastcgi_read_timeout jika proses aplikasi memakan waktu lama.

2. 403 Forbidden

Kesalahan ini terjadi karena masalah izin akses berkas (file permissions) atau ketiadaan file indeks pada direktori root. Pastikan:

  • Kepemilikan direktori web sesuai dengan pengguna proses Nginx (biasanya www-data atau nginx): sudo chown -R www-data:www-data /var/www/html.
  • Hak akses direktori diatur ke 755 dan berkas ke 644.
  • Periksa direktif index di dalam blok server.

3. 413 Request Entity Too Large

Terjadi saat klien mengunggah file yang melebihi batas ukuran yang diizinkan oleh Nginx. Tambahkan direktif berikut di dalam blok http, server, atau location:

client_max_body_size 64M;

Langkah Validasi Akhir

Setelah melakukan perubahan konfigurasi atau memperbaiki kode yang bermasalah, selalu jalankan pengujian sintaks menggunakan sudo nginx -t. Jika keluaran terminal menampilkan pesan syntax is ok dan test is successful, lanjutkan dengan mengeksekusi sudo systemctl restart nginx untuk memuat ulang seluruh proses worker secara bersih.