Mengelola website e‑commerce membutuhkan server web yang cepat, aman, dan stabil. Nginx, dengan performa tinggi dan arsitektur event-driven, sangat cocok untuk keperluan ini. Berikut praktik terbaik yang bisa diterapkan.
Contents
- 1 1. Gunakan HTTP/2 dan HTTPS
- 2 2. Optimalkan Static Content
- 3 3. Gunakan FastCGI Cache untuk PHP
- 4 4. Load Balancing untuk Trafik Tinggi
- 5 5. Gunakan Rate Limiting dan WAF
- 6 6. Logging dan Monitoring Khusus E‑Commerce
- 7 7. Gzip dan Brotli Compression
- 8 8. Session Handling dan Security
- 9 9. Backup dan Disaster Recovery
- 10 10. Optimasi Query String Caching
- 11 Kesimpulan
- 12 Related Posts
1. Gunakan HTTP/2 dan HTTPS
E‑commerce selalu melibatkan transaksi sensitif, sehingga HTTPS wajib. HTTP/2 juga direkomendasikan untuk mempercepat loading halaman dengan banyak asset.
Konfigurasi contoh:
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
root /var/www/example.com/html;
index index.php index.html;
}
Manfaat HTTP/2:
- Multiplexing: request paralel tanpa blocking
- Header compression → hemat bandwidth
- Server push → preloading resource kritis
2. Optimalkan Static Content
Website e‑commerce biasanya memiliki banyak gambar, CSS, dan JS. Optimasi asset statis penting untuk kecepatan:
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, must-revalidate";
}
Tips tambahan:
- Gunakan format gambar modern seperti WebP
- Minify CSS & JS
- Gunakan CDN untuk asset statis
3. Gunakan FastCGI Cache untuk PHP
Jika situs menggunakan CMS atau platform e‑commerce berbasis PHP (Magento, WooCommerce), caching dapat mengurangi load server:
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=PHP_CACHE:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
server {
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include snippets/fastcgi-php.conf;
fastcgi_cache PHP_CACHE;
fastcgi_cache_valid 200 301 302 60m;
fastcgi_cache_use_stale error timeout invalid_header updating;
}
}
Manfaat: halaman yang sering diakses tidak perlu diproses ulang PHP-FPM → meningkatkan performa drastis.
4. Load Balancing untuk Trafik Tinggi
E‑commerce sering mengalami lonjakan trafik, terutama saat promo. Nginx dapat menjadi load balancer untuk beberapa server backend:
upstream backend {
server 192.168.1.10;
server 192.168.1.11;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Opsi load balancing:
- Round-robin → default, simple
- Least connections → cocok untuk backend dengan variabel load
- IP hash → untuk session stickiness
5. Gunakan Rate Limiting dan WAF
E‑commerce menjadi target serangan bot dan DDoS. Terapkan rate limiting dan firewall aplikasi:
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
server {
location /checkout {
limit_req zone=one burst=10 nodelay;
}
}
Integrasikan juga dengan WAF seperti ModSecurity atau Cloudflare WAF untuk memblokir serangan umum (SQLi, XSS).
6. Logging dan Monitoring Khusus E‑Commerce
- Pisahkan access log per domain/subdomain
- Pantau error log secara berkala untuk mencegah downtime
- Gunakan monitoring tools (Grafana, Prometheus) untuk memantau response time, request per detik, dan error rate
7. Gzip dan Brotli Compression
Kompresi mengurangi bandwidth dan mempercepat load halaman.
gzip on;
gzip_types text/plain text/css application/javascript application/json image/svg+xml;
gzip_min_length 256;
gzip_comp_level 5;
Alternatif modern: Brotli untuk kompresi lebih efisien.
8. Session Handling dan Security
- Gunakan cookie secure dan HttpOnly untuk session login:
proxy_cookie_path / "/; Secure; HttpOnly; SameSite=Lax"; - Terapkan HSTS agar selalu menggunakan HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; - Batasi akses admin panel melalui IP whitelist:
location /admin { allow 192.168.1.100; deny all; }
9. Backup dan Disaster Recovery
E‑commerce rawan kehilangan data transaksi. Beberapa praktik:
- Backup database dan folder web root secara berkala
- Gunakan snapshot server untuk recovery cepat
- Simpan backup di lokasi berbeda atau cloud storage
10. Optimasi Query String Caching
E‑commerce sering menggunakan query string (misalnya ?product_id=123). Konfigurasi Nginx untuk caching halaman dengan query string:
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header updating;
- Gunakan caching selective untuk halaman statis
- Hindari caching halaman checkout atau login
Kesimpulan
Mengelola e‑commerce membutuhkan perhatian ekstra pada:
- HTTPS & HTTP/2 untuk keamanan dan performa
- Optimasi asset statis & kompresi (gzip/Brotli)
- FastCGI caching untuk PHP backend
- Load balancing untuk traffic tinggi
- Rate limiting & WAF untuk mitigasi serangan
- Logging & monitoring proaktif
- Session security & IP whitelist untuk admin panel
- Backup & disaster recovery
- Query string caching yang aman
Dengan mengikuti praktik ini, situs e‑commerce menjadi lebih cepat, aman, dan scalable, siap menghadapi lonjakan trafik dan transaksi online.