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.
Contents
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
- Backend down / crash → PHP-FPM, Node.js, atau API server mati
- Socket / port salah →
fastcgi_passatauproxy_passsalah alamat - 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
- Permission file/directory salah
- Nginx user (
www-data/nginx) tidak memiliki read access
- Nginx user (
- Root directory salah → request diarahkan ke folder yang tidak ada
- 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
rootdi server block:
root /var/www/html;
- Pastikan tidak ada
deny allyang 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_filesdi 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_filesatau.htaccessjika 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
- PHP error → syntax error, memory limit
- Node.js crash → unhandled exception
- Timeout → backend overload
- 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
- Monitoring log →
/var/log/nginx/access.log&error.log - Resource monitoring → CPU, RAM, Disk
- Health check backend → PHP-FPM, Node.js
- Timeout tuning →
proxy_read_timeout,fastcgi_read_timeout - Rate limiting & DDoS mitigation
- Backup konfigurasi & script deployment
- Test config sebelum reload:
nginx -t
systemctl reload nginx
Kesimpulan
Error Nginx paling sering di production meliputi:
| Error | Penyebab Umum | Solusi & Preventif |
|---|---|---|
| 502 Bad Gateway | Backend crash / salah port | Pastikan backend running, cek konfigurasi, health check |
| 504 Gateway Timeout | Backend overload / slow query | Tingkatkan timeout, caching, optimasi backend |
| 403 Forbidden | Permission / deny rule | Periksa permission, root, deny rules |
| 404 Not Found | File tidak ada / misconfig try_files | Periksa file, try_files, rewrite rules |
| 500 Internal Server Error | PHP/Node crash, misconfig | Cek log backend & nginx, error handling |
| 429 Too Many Requests | Rate limit aktif | Sesuaikan limit, CDN, microcaching |
Dengan monitoring rutin, konfigurasi optimal, dan preventive measures, tim DevOps dapat mengurangi downtime, meningkatkan performa, dan menghindari error Nginx di production.
