Varnish Cache adalah akselerator HTTP reverse-proxy gratis dan open-source untuk situs web dan API. Itu dapat diinstal sebagai proxy terbalik di depan server web mana pun yang berjalan di HTTP. Itu duduk di antara server web dan browser dan menyimpan halaman web, cookie, dan data lainnya ke dalam memori. Cache ini akan digunakan untuk melayani semua permintaan di masa mendatang untuk konten yang persis sama. Ini akan meningkatkan beban aplikasi web dan meningkatkan kinerja server web hingga 300+ kali lipat.
Dalam tutorial ini, kita akan menyiapkan server Nginx sebagai server backend dan mengonfigurasinya untuk mendengarkan pada port 8080, kemudian mengonfigurasi cache Varnish untuk mendengarkan pada port HTTP default 80.
Prasyarat
- Server yang menjalankan CentOS 8.
- Sandi root dikonfigurasi untuk server.
Instal dan Konfigurasi Server Web Nginx
Pertama, Anda perlu menginstal server web Nginx di sistem Anda. Anda dapat menginstalnya dengan perintah berikut:
dnf install nginx -y
Setelah terinstal, mulai layanan Nginx dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl start nginx
systemctl enable nginx
Secara default, Nginx mendengarkan pada port 80. Jadi, Anda perlu mengonfigurasi Nginx untuk mendengarkan pada port 80. Anda dapat mengonfigurasinya dengan mengedit file konfigurasi default Nginx:
nano /etc/nginx/nginx.conf
Temukan baris berikut:
listen 80 default_server; listen [::]:80 default_server;
Dan, ganti dengan baris berikut:
listen 8080 default_server; listen [::]:8080 default_server;
Simpan dan tutup file setelah Anda selesai. Kemudian, restart layanan Nginx untuk menerapkan perubahan:
systemctl restart nginx
Pada titik ini, server web Nginx diinstal dan mendengarkan pada port 8080. Anda dapat memeriksanya menggunakan perintah berikut:
netstat -tpln | grep 8080
Anda akan mendapatkan output berikut:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Instal Cache Pernis
Secara default, paket Varnish tersedia di repositori default CentOS 8. Anda dapat menginstalnya hanya dengan menjalankan perintah berikut:
dnf module install varnish
Setelah terinstal, mulai layanan Varnish dengan perintah berikut:
systemctl start varnish
Anda juga dapat memverifikasi versi cache Varnish yang diinstal dengan perintah berikut:
varnishd -V
Anda akan melihat output berikut:
varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91) Copyright (c) 2006 Verdens Gang AS Copyright (c) 2006-2018 Varnish Software AS
Konfigurasi Pernis untuk Nginx
Selanjutnya, Anda perlu mengonfigurasi pernis agar berjalan di port 80 untuk menerima permintaan HTTP dari klien. Anda dapat mengonfigurasinya dengan mengedit file konfigurasi default Varnish:
systemctl edit --full varnish
Temukan baris berikut:
ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m
Dan, ganti dengan baris berikut:
ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
Simpan dan tutup file setelah Anda selesai.
Selanjutnya, Anda perlu menentukan server backend untuk Varnish. Anda dapat melakukannya dengan mengedit file konfigurasi utama Varnish /etc/varnish/default.vcl:
nano /etc/varnish/default.vcl
Ubah baris berikut:
backend myserver { .host = "127.0.0.1"; .port = "8080"; }
Simpan dan tutup file setelah Anda selesai. Kemudian, muat ulang daemon systemd dengan perintah berikut:
systemctl daemon-reload
Selanjutnya, restart layanan Varnish dan aktifkan untuk memulai pada sistem reboot dengan perintah berikut:
systemctl restart varnish
systemcl enable varnish
Anda juga dapat memverifikasi status Varnish dengan perintah berikut:
systemctl status varnish
Anda akan mendapatkan output berikut:
? varnish.service - Varnish Cache, a high-performance HTTP accelerator Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS) Main PID: 30424 (varnishd) Tasks: 217 Memory: 91.8M CGroup: /system.slice/varnish.service ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator... Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91 Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.
Anda sekarang dapat memverifikasi port mendengarkan Nginx dan Varnish dengan perintah berikut:
netstat -tpln | grep 80
Anda akan melihat output berikut:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 30424/varnishd tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 30367/nginx: master tcp6 0 0 :::80 :::* LISTEN 30424/varnishd tcp6 0 0 :::8080 :::* LISTEN 30367/nginx: master
Konfigurasi SELinux dan Firewall
Secara default, SELinux diaktifkan di CentOS 8. Jadi, Anda perlu mengkonfigurasi SELinux untuk Varnish. Anda dapat mengkonfigurasinya dengan perintah berikut:
setsebool -P httpd_can_network_connect 1
Selanjutnya, Anda harus mengizinkan port 80 melalui firewalld. Anda dapat melakukannya dengan perintah berikut:
firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload
Setelah selesai, Anda dapat melanjutkan ke langkah berikutnya.
Uji Cache Pernis
Pada titik ini, cache Varnish diinstal dan dikonfigurasi dengan server web Nginx. Sekarang, waktunya untuk menguji apakah cache Varnish berfungsi atau tidak.
Anda dapat mengujinya menggunakan perintah curl seperti yang ditunjukkan di bawah ini:
curl -I http://localhost
Anda akan melihat output berikut:
HTTP/1.1 200 OK Server: nginx/1.14.1 Date: Sat, 29 Aug 2020 13:53:44 GMT Content-Type: text/html; charset=UTF-8 X-Powered-By: PHP/7.2.24 X-Varnish: 32800 Age: 0 Via: 1.1 varnish (Varnish/6.0) Accept-Ranges: bytes Connection: keep-alive
Kesimpulan
Selamat! Anda telah berhasil menginstal Varnish Cache dengan Nginx di CentOS 8. Saya harap Anda juga dapat mengkonfigurasi cache Varnish dengan server web Apache dengan mudah. Jangan ragu untuk bertanya kepada saya jika Anda memiliki pertanyaan.