Bukan merk cat, bukan pula nama minyak untuk melukis. Varnish yang saya maksud disini adalah sebuah software open source HTTP accelerator atau biasa juga dikenal dengan HTTP reverse proxy yang dirancang khusus untuk meningkatkan kinerja (kecepatan) akses terhadap website dinamis. Berbeda dengan akselerator lainnya yang biasanya mendukung banyak protokol jaringan seperti FTP, HTTP, SMTP dan sebagainya, varnish ini hanya difokuskan untuk mendukung protokol HTTP saja.
Cara kerja varnish adalah dengan cara menyalin (merekam) dan menyimpan salinan (rekaman) dari halaman yang pertama kali dikunjungi oleh penggunjung dan jika suatu saat nanti pengunjung tersebut mengakses halaman itu lagi, maka varnish akan memberikan salinannya, bukan memintanya lagi kepada server web. Dengan cara seperti itu, tentu saja akses terhadap halaman tersebut akan menjadi lebih efektif dan efisien.
Dengan bantuan varnish, selain website anda dapat diakses lebih cepat, anda juga dapat mengurangi beban kerja server anda, terutama penggunaan CPU.
Untuk dapat menjalankan varnish, anda membutuhkan web server seperti apache atau nginx yang nantinya akan digunakan sebagai backend server. Backed server ini bertugas menyediakan konten ke varnish untuk dilakukan penyalinan yang selanjutnya konten hasil salinan tersebut akan disimpan dan dapat diakses oleh user (pengunjung) jika diminta.
Varnish dapat anda install di Linux Ubuntu, Debian, FreeBSD maupun RedHat. Namun karena saya sedang mengguanakn VPS Ubuntu 14.04 dengan web server nginx plus CMS WordPress, maka saya akan coba mendemonstrasikannya untuk anda khusus bagi yang menggunakan Ubuntu saja.
Harap anda perhatikan hal-hal berikut sebelum anda install varnish dan konfigurasi varnish di VPS Ubuntu anda :
- Pastikan anda menggunakan Linux Ubuntu yang direkomendasikan. Versi yang direkomendasikan adalah Ubuntu LTS. Untuk versi lain, silahkan anda coba sendiri.
- Pastikan pula anda menggunakan web server nginx. Lihat artikel cara install LEMP di Ubuntu untuk menginstall paket Nginx, MySQL dan PHP.
- Saya mempraktekan ini dengan CMS WordPress, jika anda ingin menggunakan varnish untuk situs wordpress anda, pastikan anda sudah menginstall wordpress di VPS anda. Silahkan baca artikel cara install wordpress dengan nginx di ubuntu server.
Berikut ini adalah cara install serta konfigurasi varnish dengan web server nginx pada Ubuntu server :
- Install transport https dengan command :
apt-get install apt-transport-https
- Ambil PGP PUBLIC KEY BLOCK dengan curl :
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
Jika belum install curl, silahkan anda install terlebih dahulu dengan command :
apt-get install curl
- Masukkan command berikut :
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
Ganti trusty dengan precise apabila anda menggunakan ubuntu 12.04 LTS.
- Update dan install varnish dengan perintah :
apt-get update
apt-get install varnish
- Anda sudah berhasill menginstall varnish versi 4.0 di VPS ubuntu anda. Selanjutnya anda tinggal mengatur konfigurasi varnish beserta backend yang ingin anda gunakan. Untuk langkah pertama, silahkan anda ganti port varnish supaya bisa berjalan di port 80. Buka file /etc/default/varnish dengan editor andalan anda. Disini saya menggunakan nano editor.
nano /etc/default/varnish
Perhatikan pada baris-baris dibawah Alternative 2, Configuration with VCL. Fokuskan pada baris :
DAEMON_OPTS="-a :6081 \
Silahkan anda rubah 6081 dengan 80. Untuk bagian ‘malloc 256m’ bisa anda biarkan saja atau silahkan sesuaikan dengan besaran RAM pada VPS atau Dedicated Server anda. 256m berarti anda hanya mengalokasikan 256MB untuk digunakan varnish. Karena saya hanya mempunyai RAM 512MB, jadi saya biarkan saja seperti itu. Lalu save sebelum exit. CTRL+X, Y.
- Anda juga harus menentukan backend server dan lain-lain untuk memberitahu varnish dimana mereka dapat menemukan web server yang ingin anda gunakan. Dalam hal ini web server yang akan digunakan adalah nginx dengan port 8080 (port nginx akan diatur dilangkah berikutnya).
Silahkan buka file /etc/varnish/default.vcl dengan editor seperti biasa :nano /etc/varnish/default.vcl
Pastikan anda menemukan baris :
backend default { .host = "127.0.0.1"; .port = "8080"; }
Jika tidak menemukannya, silahkan anda edit. Karena saya menggunakan wordpress, maka saya tambahkan baris-baris berikut dibawahnya :
sub vcl_recv { # Allow posts preview if (req.url ~ "preview=true") { return(pass); } # Drop cookies sent to WordPress if (!(req.url ~ "wp-(login|admin)")) { unset req.http.cookie; } } sub vcl_fetch { # Drop cookies sent to client if (!(req.url ~ "wp-(login|admin)")) { unset beresp.http.set-cookie; } }
- Saatnya mengatur konfigurasi virtual hosts (server blocks) nginx supaya berjalan pada port 8080. Buka file konfigurasi virtual hosts anda :
nano /etc/nginx/sites-available/domain.com
Ganti domain.com dengan nama file konfigurasi nginx virtual hosts anda. Pada bagian listen anda ganti portnya (angka) menjadi :
127.0.0.1:8080";
Tambahkan pula baris berikut pada file konfigurasi virtual host anda :
port_in_redirect off;
Baris tersebut berfungsi untuk menonaktifkan redirect port 8080. Jika anda tidak menambahkan baris tersebut biasanya nanti setiap anda mengakses situs anda, maka anda akan dibawa langsung ke port 8080. Anda tidak akan bisa mengakses situs tersebut karena anda sudah mengatur port 8080 sebagai backend varnish dengan nginx agar dapat terhubung satu sama lain.
Terakhir, jangan lupa simpan konfigurasinya dengan CTRL+X, Y. - Anda dapat menghapus konfigurasi nginx virtual hosts default dengan command :
rm /etc/nginx/sites-enabled/default
- Test konfigurasi nginx yang anda buat, apakah sudah benar atau belum dengan mengetik perintah :
nginx -t
- Restart nginx dan varnish melalui perintah :
service nginx restart
service varnish restart
Saatnya anda test sendiri apakah varnish beserta nginx sudah berhasil bekerjasama atau belum. Saya biasa mengeceknya melalui situs centralops.net.
Klik GO dan scroll kebagian bawah sampai anda menemuka bagian service scan HTTP – 80 :
Anda juga dapat mengetahui dan memonitor kinerja varnish melalui command :
varnishstat