Error Nginx Paling Sering di Production Server: Penyebab dan Solusinya

Error Nginx Paling Sering di Production Server: Penyebab dan Solusinya

Nginx adalah web server high-performance dan stabil, namun dalam lingkungan production, beberapa error sering muncul akibat konfigurasi, resource, atau aplikasi backend. Memahami error ini penting agar tim DevOps cepat menanganinya, mengurangi downtime, dan menjaga kualitas layanan.

Artikel ini membahas error Nginx paling umum, penyebab, solusi, dan langkah preventif.


1. 502 Bad Gateway

1.1 Gejala

  • Browser menampilkan 502 Bad Gateway
  • Nginx tidak bisa meneruskan request ke backend (PHP-FPM, Node.js, atau server lain)

1.2 Penyebab

  1. Backend down / crash → PHP-FPM, Node.js, atau API server mati
  2. Socket / port salahfastcgi_pass atau proxy_pass salah alamat
  3. Timeout backend terlalu cepat → backend membutuhkan response lebih lama dari timeout Nginx

1.3 Solusi

  • Pastikan backend running:
systemctl status php7.4-fpm
systemctl status nodejs-app
  • Periksa konfigurasi Nginx:
location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
}
  • Tingkatkan timeout Nginx jika backend lambat:
proxy_read_timeout 90;
fastcgi_read_timeout 90;

1.4 Preventif

  • Gunakan health check pada backend
  • Auto-restart service jika crash (systemd / PM2)
  • Optimasi backend agar cepat merespons request

2. 504 Gateway Timeout

2.1 Gejala

  • Nginx menunggu response backend lebih lama dari batas → 504 Timeout

2.2 Penyebab

  • Backend overload → tidak dapat memproses request tepat waktu
  • Query database lambat
  • Timeout default Nginx terlalu rendah (proxy_read_timeout / fastcgi_read_timeout)

2.3 Solusi

  • Tingkatkan timeout:
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
fastcgi_read_timeout 60s;
  • Optimasi backend dan database query
  • Gunakan caching Nginx untuk halaman atau API populer

2.4 Preventif

  • Monitor backend load & database performance
  • Implementasi microcaching untuk high-traffic pages

3. 403 Forbidden

3.1 Gejala

  • Browser menampilkan 403 Forbidden
  • Nginx menolak akses ke resource

3.2 Penyebab

  1. Permission file/directory salah
    • Nginx user (www-data / nginx) tidak memiliki read access
  2. Root directory salah → request diarahkan ke folder yang tidak ada
  3. Deny rules di konfigurasi:
location /admin/ {
    deny all;
}

3.3 Solusi

  • Periksa permission file/folder:
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
  • Periksa konfigurasi root di server block:
root /var/www/html;
  • Pastikan tidak ada deny all yang salah lokasi

3.4 Preventif

  • Standarisasi file permission & ownership
  • Review konfigurasi Nginx sebelum deploy

4. 404 Not Found

4.1 Gejala

  • Resource tidak ditemukan → Nginx mengembalikan 404

4.2 Penyebab

  • File/folder tidak ada
  • Salah konfigurasi try_files di Nginx:
location / {
    try_files $uri $uri/ /index.php?$query_string;
}
  • Rewrite rules tidak cocok

4.3 Solusi

  • Periksa file/folder sesuai request URL
  • Periksa konfigurasi try_files atau .htaccess jika migrasi dari Apache
  • Pastikan backend dapat handle fallback request

4.4 Preventif

  • Gunakan deployment script untuk memverifikasi file exist
  • Monitoring 404 log → deteksi broken link atau URL typo

5. 500 Internal Server Error

5.1 Gejala

  • Browser menampilkan 500 Internal Server Error
  • Masalah biasanya di backend

5.2 Penyebab

  1. PHP error → syntax error, memory limit
  2. Node.js crash → unhandled exception
  3. Timeout → backend overload
  4. Misconfigured fastcgi_pass / proxy_pass

5.3 Solusi

  • Periksa log Nginx: /var/log/nginx/error.log
  • Periksa log backend: PHP-FPM /var/log/php7.4-fpm.log, Node.js log
  • Tambahkan error handling di aplikasi backend

5.4 Preventif

  • Gunakan process manager: PHP-FPM + PM2
  • Implementasi try-catch & error handling di backend
  • Monitor server & alert jika ada spike error

6. 429 Too Many Requests

6.1 Gejala

  • Rate limiting aktif → Nginx mengembalikan 429 Too Many Requests

6.2 Penyebab

  • Traffic per IP melewati limit di konfigurasi:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

6.3 Solusi

  • Tingkatkan limit jika legitimate traffic terlalu tinggi
  • Terapkan CDN untuk traffic tinggi
  • Review pattern request → filter bot/spam

6.4 Preventif

  • Rate limit untuk login form, API endpoint
  • Gunakan microcaching untuk mengurangi request ke backend

7. Tips Preventif Umum

  1. Monitoring log/var/log/nginx/access.log & error.log
  2. Resource monitoring → CPU, RAM, Disk
  3. Health check backend → PHP-FPM, Node.js
  4. Timeout tuningproxy_read_timeout, fastcgi_read_timeout
  5. Rate limiting & DDoS mitigation
  6. Backup konfigurasi & script deployment
  7. Test config sebelum reload:
nginx -t
systemctl reload nginx

Kesimpulan

Error Nginx paling sering di production meliputi:

ErrorPenyebab UmumSolusi & Preventif
502 Bad GatewayBackend crash / salah portPastikan backend running, cek konfigurasi, health check
504 Gateway TimeoutBackend overload / slow queryTingkatkan timeout, caching, optimasi backend
403 ForbiddenPermission / deny rulePeriksa permission, root, deny rules
404 Not FoundFile tidak ada / misconfig try_filesPeriksa file, try_files, rewrite rules
500 Internal Server ErrorPHP/Node crash, misconfigCek log backend & nginx, error handling
429 Too Many RequestsRate limit aktifSesuaikan limit, CDN, microcaching

Dengan monitoring rutin, konfigurasi optimal, dan preventive measures, tim DevOps dapat mengurangi downtime, meningkatkan performa, dan menghindari error Nginx di production.