Varnish merupakan perangkat lunak HTTP accelerator, membuat cache dari konten website dan menyimpannya di memori sehingga dapat mempercepat respon website. Varnish digunakan oleh website besar yang memiliki traffic tinggi seperti Wikipedia, The New York Times, The Guardian, Facebook, Twitter, Reddit, Vimeo, dan Tumblr. Pada tahun 2012 5 persen dari 10.000 website top dunia menggunakan Varnish.
-Cara Kerja-
Ketika visitor website membuka halaman, Varnish yang merespon di depan. Jika halaman yang diakses sudah tersedia cache, cache dari halaman tersebut yang ditampilkan. Jika belum ada, permintaan halaman diteruskan ke webserver seperti Apache atau Nginx, lalu hasilnya di kembalikan ke Varnish untuk dibuatkan cache dan ditampilkan ke visitor.
Diagram hubungan BrowserVarnishApache
-Konfigurasi Apache-
Stop service Apache
[INPUT]1 sudo systemctl stop apache2
Ubah port Apache dari 80 ke 8080
[INPUT]1 sudo nano /etc/apache2/ports.conf
Ubah *Listen 80* menjadi *Listen 8080*
Ubah juga pada file virtual host
[INPUT]1 sudo nano /etc/apache2/sites-available/000-default.conf
Ubah *VirtualHost *:80* menjadi *VirtualHost *:8080*
Start service Apache
[INPUT]1 2 sudo systemctl daemon-reload sudo systemctl start apache2
Sekarang Apache berjalan pada port 8080, *http://IP_SERVER:8080*
-Konfigurasi Varnish-
Instalasi Varnish
[INPUT]1 sudo apt-get install varnish
Ubah port Varnish ke port 80
[INPUT]1 sudo nano /etc/default/varnish
Cari baris kode di bawah ini
[INPUT]1 2 3 4 5 DAEMON_OPTS=”-a :6081 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,256m”
Ubah *-a :6081* menjadi *-a :80*
Pastikan juga backend mengarah ke port Apache yang sudah diubah ke 8080.
[INPUT]1 sudo nano /etc/varnish/default.vcl
Cari baris kode
[INPUT]1 2 3 4 backend default { .host = “127.0.0.1”; .port = “8080”; }
Ubah port Varnish pada konfigurasi service
[INPUT]1 sudo nano /lib/systemd/system/varnish.service
Cari baris kode
[INPUT]1 ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Ubah *-a :6081* menjadi *-a :80*
[INPUT]1 ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Restart service varnish
[INPUT]1 sudo systemctl restart varnish
-Pengujian-
Jalankan perintah curl ke http://IP atau http://domain
[INPUT]1 curl -I http://10.0.8.175
Hasilnya
[INPUT]1 2 3 4 5 6 7 8 9 10 HTTP/1.1 200 OK Date: Tue, 05 Sep 2017 02:08:45 GMT Server: Apache/2.4.18 (Ubuntu) Vary: Accept-Encoding Content-Type: text/html; charset=UTF-8 X-Varnish: 65548 Age: Via: 1.1 varnish-v4 Accept-Ranges: bytes Connection: keep-alive
Bandingkan hasilnya tanpa menggunakan Varnish
[INPUT]1 2 3 4 5 6 7 8 9 HTTP/1.1 200 OK Date: Tue, 05 Sep 2017 02:10:21 GMT Server: Apache/2.4.18 (Ubuntu) Last-Modified: Sun, 19 Mar 2017 11:06:24 GMT ETag: “2c39-54b1366cd1c27” Accept-Ranges: bytes Content-Length: 11321 Vary: Accept-Encoding Content-Type: text/html
-Menghapus Cache-
Ada kalanya kita ingin menghapus cache Varnish misalnya pada saat melakukan perubahan pada website namun belum terlihat hasil perubahannya karena masih menampilkan website yang lama dari cache. Caranya yang saya gunakan dengan merestart varnish.
[INPUT]1 sudo systemctl restart varnish
selamat mencoba ð