Friday, June 3, 2011

Handling of static files with nginx

Dalam praktiknya, sebuah server dengan Web Servernya melayani rekues Http (HTTP Request) untuk diproses dan kemudian dikembalikan lagi ke user sebagai respons Http (HTTP Response). Bentuk dari rekuest Http itu sendiri terdiri halaman web (berupa HTML atau skripting) dan komponen atau entitas seperti image, JavaScript, CSS. Dan Web Server memproses semua rekues tersebut.

Dengan mengaplikasikan dua Web Server dalam satu server ini bertujuan untuk membagi tugas antara satu Web Server dengan Web Server lainnya. semisal, satu Web Server untuk melayani rekues halaman web terutama halaman web yang dinamis (menggunakan Php, Asp, ColdFusion sebagai bahasa pemrogamannya) dan satu Web Server lagi untuk melayani rekues file-file statik (jpg, gif, js, css).

Karena dua Web Server mengerjakan tugasnya yang berbeda, maka sebuah rekues halaman web akan diproses secara simultan oleh dua Web Server. Tentunya ini akan memperkecil waktu akses yang dialami user.

Sebelum mengaplikasikannya, kita perlu set-up nginx sebagai reverse proxy terlebih dauhu. Selanjutnya tinggal menambahkan beberapa baris konfigurasi pada nginx.conf agar jika ada request dari http client yang berupa file static, langsung bisa dilayani oleh nginx (front-end) dan tidak perlu di teruskan ke server apache (back-end).

Mendefinisikan tipe-tipe file static ( File statik adalah file yang langsung direspons oleh Web Server tanpa melalui proses pengolahan content)yang akan dilayani oleh nginx :

.:: tambahkan baris berikut dalam konfigurasi nginx.



location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|w$

    {

    root   /path/dari/file-file/static;

    }


contoh isi vhost dari  nginx.conf

server {

   listen  80;

   server_name  idprayoga.com;

   access_log  /path/log/idprayoga.com.access.log ;

   error_log    /path/log/idprayoga.com.error.log ;

   location / {

        proxy_pass http://10.100.100.99:8080;

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

   }

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$

    {

    root   /path/directory/idprayoga.com/htdocs;

    }

}

.:: restart nginx

.:: Pengujian:

Kita dapat mengetahui kedua Web Server telah bekerja sesuai tugasnya masing-masing dengan melihat log access-nya. Untuk log access di Apache dapat kita lihat kalau Apache tidak menerima file-file statik. Tetapi log access di Nginx terlihat semua rekues Http ada disana, baik file-file statik maupun halaman dinamis. Ini terjadi karena semua rekues Http masuk terlebih dahulu melalui Nginx (karena Nginx berjalan di port default HTTP, yaitu port 80) kemudian diteruskan ke Apache apabila Http rekues bukan file statik.

Semoga dengan menggunakan dua Web Server dapat mempercepat waktu akses user ketika merekues halaman web.

Mohon dikasih masukan jika ada yang salah atau kurang. Terimakasih :)

Author:

0 komentar: