Best Practices Nginx untuk E‑Commerce

Best Practices Nginx untuk E‑Commerce

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.


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:

  1. HTTPS & HTTP/2 untuk keamanan dan performa
  2. Optimasi asset statis & kompresi (gzip/Brotli)
  3. FastCGI caching untuk PHP backend
  4. Load balancing untuk traffic tinggi
  5. Rate limiting & WAF untuk mitigasi serangan
  6. Logging & monitoring proaktif
  7. Session security & IP whitelist untuk admin panel
  8. Backup & disaster recovery
  9. 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.