Sunday, February 2, 2014

Konfigurasi Nginx Untuk Optimasi Static Assets Files

Selain sebagai load balancer, Nginx juga memiliki performansi yang sangat baik response time atau request per second saat melayani request assets files seperti css, javascript, html, pdf, image atau static files lain.

Saya sendiri pernah membandingkan response time Nginx dengan yang lain saat mengirimkan request untuk image dan hasilnya adalah Nginx memiliki response time 2 - 3 kali lebih baik. Padahal ukuran filenya lebih besar.

Berikut ini adalah optimasi Nginx untuk static assets files. Nginx yang digunakan adalah versi 1.4.4. Pada Debian 6, file konfigurasi Nginx terdapat pada direktori /etc/nginx/nginx.conf.

# asumsi, seluruh assets file seperti js, css, image berada pada directory assets
location ~ ^/assets/ {
  gzip_static on;
  expires max;
  add_header Cache-Control public;

  # unset ETag. Tidak disarankan menggunakan ETag
  # saat ada Last-Modified yang di set melalui "expires".
  add_header ETag "";
  break;
}

Konfigurasi secara keseluruhan. (Gist: https://gist.github.com/kuntoaji/8769117)
# Nginx default configuration
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    server {
     listen 80;
     server_name example.com www.example.com;
     root /home/example/html/public;

     # mulai dari ini :)
     location ~ ^/assets/ {
       gzip_static on;
       expires max;
       add_header Cache-Control public;
       add_header ETag "";
       break;
     }
   }
}

No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...