Optimasi Nginx untuk High Traffic
Kenapa Perlu Optimasi Nginx?
Default konfigurasi Nginx cukup untuk traffic kecil hingga menengah. Namun saat traffic meningkat (ribuan hingga puluhan ribu request per menit), konfigurasi default bisa menyebabkan bottleneck CPU, RAM, atau I/O.
2. Optimasi Worker Process & Connection
Edit file utama:
sudo nano /etc/nginx/nginx.conf
Ubah bagian berikut:
worker_processes auto;
events {
worker_connections 4096;
multi_accept on;
}
Penjelasan:
- worker_processes auto → menyesuaikan jumlah core CPU
- worker_connections → jumlah koneksi per worker
- multi_accept → menerima banyak koneksi sekaligus
3. Optimasi Keepalive & Timeout
http {
keepalive_timeout 30;
keepalive_requests 1000;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
}
4. Aktifkan Gzip Compression
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
5. Brotli Compression (Opsional Lebih Optimal)
Jika sudah install module brotli:
brotli on;
brotli_comp_level 5;
brotli_types text/plain text/css application/javascript application/json image/svg+xml;
6. Setup FastCGI / Proxy Cache
Tambahkan di http block:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
Tambahkan di server block:
location / {
proxy_cache my_cache;
proxy_cache_valid 200 60m;
proxy_pass http://127.0.0.1:3000;
}
7. Optimasi Buffer
client_body_buffer_size 16k;
client_max_body_size 20m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
8. Rate Limiting (Anti Abuse)
limit_req_zone $binary_remote_addr zone=limit_zone:10m rate=10r/s;
server {
location / {
limit_req zone=limit_zone burst=20 nodelay;
}
}
9. Tingkatkan File Descriptor Limit
sudo nano /etc/security/limits.conf
www-data soft nofile 65535
www-data hard nofile 65535
10. Optimasi Kernel (sysctl)
sudo nano /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
sudo sysctl -p
11. Tambahkan Security Headers
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
12. Monitoring & Benchmark
Gunakan tools berikut:
- htop → monitor CPU/RAM
- nginx status module
- ab (Apache Benchmark)
- wrk load testing tool
Contoh benchmark sederhana:
ab -n 10000 -c 100 http://domainkamu.com/
13. Restart & Test Konfigurasi
sudo nginx -t
sudo systemctl reload nginx
14. Best Practice Production
- Gunakan CDN seperti Cloudflare
- Gunakan SSL Full Strict
- Gunakan caching agresif untuk static file
- Gunakan load balancer untuk horizontal scaling
- Monitoring realtime traffic
15. Kesimpulan
Optimasi Nginx sangat penting untuk menangani high traffic dengan stabil. Dengan tuning worker, caching, compression, dan kernel optimization, server dapat menangani ribuan request per detik secara efisien.