Varnish adalah server proxy yang berfokus pada caching HTTP yang dirancang sebagai akselerator HTTP dan dapat bertindak sebagai reverse proxy untuk web server Anda (Apache atau Nginx). Varnish telah digunakan untuk situs web high-profile dan lalu lintas tinggi, termasuk Wikipedia, The Guardian, dan The New York Times.

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara menginstal dan mengkonfigurasi Varnish HTTP accelerator sebagai reverse proxy untuk web server Apache.

Apache akan berjalan di bawah port HTTP non-standar (berjalan pada port 8080). Dan Varnish akan berjalan sebagai reverse proxy pada port HTTP 80. Untuk panduan ini, kita akan menggunakan server Ubuntu 18.04 LTS.

Apa yang akan kita lakukan?

  1. Instal Web server Apache
  2. Ubah Port Default Apache
  3. Install Varnish
  4. Konfigurasikan Varnish
  5. Testing konfigurasi Varnish

Langkah 1 – Instal server Web Apache

Untuk memulai, instal server web Apache. Secara default, ini tersedia di repositori Ubuntu. Perbarui repositori Ubuntu dan kemudian instal Apache menggunakan perintah apt.

apt update
apt install -y apache2

Setelah instalasi selesai, start Apache dan aktifkan untuk mulai secara otomatis pada saat boot sistem menggunakan perintah systemctl berikut.

systemctl start apache2
systemctl enable apache2

Pada poin ini, Web server Apache telah diinstal.

Selanjutnya, untuk memungkinkan semua orang mengakses  web server, kita harus mengizinkan akses HTTP dan HTTPS pada aturan firewall. Secara default, Ubuntu hadir dengan paket firewall bernama UFW.

Buka port SSH, HTTP dan HTTPS baru menggunakan perintah UFW berikut.

ufw allow ssh
ufw allow http
ufw allow https

Sekarang mulai layanan firewall dan aktifkan untuk meluncurkan secara otomatis saat boot sistem.

ufw enable

Ketik ‘y‘ dan tekan Enter untuk mengonfirmasi Port baru untuk HTTP, HTTPS, dan SSH sehingga dapat diakses dari luar jaringan.

Jika Anda ingin menguji web server Apache, Anda dapat menggunakan perintah netstat dan memastikan apache berjalan pada port 80.

netstat -tulnpt

Atau Anda dapat menggunakan perintah curl berikut.

curl -I serverIP_atau_domain

Langkah 2 – Ubah Port Default Apache

Dalam tutorial ini, kita akan menggunakan Apache sebagai server backend, dan kita juga akan membuat Apache tidak akan berjalan di port HTTP standar 80. Server web Apache akan berjalan pada port 8080 sebagai backend, dan port HTTP standar 80 akan digunakan oleh ‘ Varnish’.

Untuk mengubah port apache default, kita perlu mengedit konfigurasi apache ‘ports.conf‘ dan semua konfigurasi host virtual di bawah direktori ‘sites-available’.

Kita navigasikan ke direktori konfigurasi Apache dengan perintah cd.

cd /etc/apache2

Ganti port ‘80‘ dengan ‘8080‘ di konfigurasi Apache 'ports.conf‘ dan semua file host virtual di bawah direktori ‘sites-available‘. Kita dapat melakukannya dengan menjalankan perintah sed berikut.

sed -i -e 's/80/8080/g' ports.conf
sed -i -e 's/80/8080/g' sites-available/*

Selanjutnya, uji konfigurasi Apache dan pastikan tidak ada kesalahan, kemudian restart layanan Apache.

apachectl configtest
systemctl restart apache2

Sekarang Apache berjalan di bawah port HTTP ‘8080’, periksa menggunakan perintah ‘netstat’ seperti yang ditunjukkan di bawah ini.

netstat -plntu

Pastikan Anda mendapatkan hasilnya seperti di bawah ini.

Pada hasil output menunjukkan bahwa web server Apache berjalan di port ‘8080’.

Langkah 3 – Instal Varnish HTTP Accelerator

Pada langkah ini, kita akan menginstal Varnish dari repositori Ubuntu. Dan untuk panduan ini, kita akan menggunakan Varnish 5.2.

Instal varnish menggunakan perintah apt berikut.

apt install -y varnish

Setelah instalasi selesai, mulai Varnish dan aktifkan untuk mulai  secara otomatis saat boot sistem.

systemctl start varnish
systemctl enable varnish

Secara default, Varnish berjalan di port ‘6081‘ untuk alamat public dan ‘6082‘ untuk alamat localhost. Periksa menggunakan perintah netstat di bawah ini.

netstat -plntu

Dan Anda akan mendapatkan port varnish default.

Langkah 4 – Konfigurasi Varnish sebagai Reverse Proxy untuk Apache

Pada langkah ini, kita akan mengkonfigurasi varnish di bagian depan server web Apache. Varnish akan berjalan di bawah port http 80, dan setiap permintaan dari klien akan ditangani olehnya, sebelum dikirim ke server web Apache yang berjalan di port 8080.

Konfigurasi Backend

Pergi ke direktori konfigurasi ‘varnish’ dan backup file default ‘default.vcl‘.

cd /etc/varnish/
cp default.vcl default.vcl.aseli

Edit konfigurasi varnish ‘default.vcl’ menggunakan editor nano.

nano default.vcl

Tentukan konfigurasi ‘backend’. Backend untuk pengaturan kita adalah Apache, dan berjalan pada port 8080. Jadi konfigurasi varnish untuk pengaturan apache kita harus sebagai berikut:

backend default {
     .host = "127.0.0.1";
     .port = "8080";
 }

Simpan dan keluar.

Jalankan Varnish di Port 80

Selanjutnya, kita perlu mengubah port default varnish. Port default untuk varnish adalah ‘6081‘ dan ‘6082‘, dan kita perlu mengubah port tersebut ke port HTTP 80 (hanya untuk alamat public).

Edit konfigurasi parameter varnish di direktori ‘/etc/default‘.

cd /etc/default/
nano varnish

Edit pada bagian ‘DAEMON_OPTS‘, ubah default port ‘6081‘ dengan port standard untuk HTTP port ’80’ .

DAEMON_OPTS="-a :80 \
              -T localhost:6082 \
              -f /etc/varnish/default.vcl \
              -S /etc/varnish/secret \
              -s malloc,256m"

Simpan dan keluar.

Selanjutnya, kita perlu mengedit file layanan varnish ‘varnish.service‘. Buka direktori ‘/lib/systemd/system‘ dan edit file layanan menggunakan vim.

cd /lib/systemd/system/
vim varnish.service

Pada baris ‘ExecStart‘, ubah perintah mulai varnish seperti di bawah ini.

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

Simpan dan keluar.

Reload konfigurasi systemd dan kemudian restart Varnish.

systemctl daemon-reload
systemctl restart varnish

Sekarang periksa varnish dan pastikan berjalan pada port HTTP 80.

netstat -plntu

varnish-service

Jadi Varnish sekarang berjalan di bawah port HTTP 80 sebagai front-end untuk web server Apache, yang ada di port 8080.

Langkah 5 – Testing Konfigurasi

Uji menggunakan perintah curl.

curl -I nama_domain

Pastikan Anda mendapatkan HTTP header seperti yang ditunjukkan di bawah ini.

curl test

Periksa varnish log menggunakan perintah ‘varnishncsa‘.

varnishncsa

Dan kami mendapatkan log hanya dari log akses Apache.

varnishcsa

Instalasi dan konfigurasi Varnish untuk server web Apache telah selesai.