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_passdi 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_timeoutataufastcgi_read_timeoutjika 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-dataataunginx):sudo chown -R www-data:www-data /var/www/html. - Hak akses direktori diatur ke
755dan berkas ke644. - Periksa direktif
indexdi 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.